1 /*
2  * wpa_supplicant module tests
3  * Copyright (c) 2014, Jouni Malinen <j@w1.fi>
4  *
5  * This software may be distributed under the terms of the BSD license.
6  * See README for more details.
7  */
8 
9 #include "utils/includes.h"
10 
11 #include "utils/common.h"
12 #include "utils/module_tests.h"
13 #include "wpa_supplicant_i.h"
14 #include "bssid_ignore.h"
15 
16 
17 static int wpas_bssid_ignore_module_tests(void)
18 {
19 	struct wpa_supplicant wpa_s;
20 	int ret = -1;
21 
22 	os_memset(&wpa_s, 0, sizeof(wpa_s));
23 
24 	wpa_bssid_ignore_clear(&wpa_s);
25 
26 	if (wpa_bssid_ignore_get(NULL, NULL) != NULL ||
27 	    wpa_bssid_ignore_get(NULL, (u8 *) "123456") != NULL ||
28 	    wpa_bssid_ignore_get(&wpa_s, NULL) != NULL ||
29 	    wpa_bssid_ignore_get(&wpa_s, (u8 *) "123456") != NULL)
30 		goto fail;
31 
32 	if (wpa_bssid_ignore_add(NULL, NULL) == 0 ||
33 	    wpa_bssid_ignore_add(NULL, (u8 *) "123456") == 0 ||
34 	    wpa_bssid_ignore_add(&wpa_s, NULL) == 0)
35 		goto fail;
36 
37 	if (wpa_bssid_ignore_del(NULL, NULL) == 0 ||
38 	    wpa_bssid_ignore_del(NULL, (u8 *) "123456") == 0 ||
39 	    wpa_bssid_ignore_del(&wpa_s, NULL) == 0 ||
40 	    wpa_bssid_ignore_del(&wpa_s, (u8 *) "123456") == 0)
41 		goto fail;
42 
43 	if (wpa_bssid_ignore_add(&wpa_s, (u8 *) "111111") < 0 ||
44 	    wpa_bssid_ignore_add(&wpa_s, (u8 *) "111111") < 0 ||
45 	    wpa_bssid_ignore_add(&wpa_s, (u8 *) "222222") < 0 ||
46 	    wpa_bssid_ignore_add(&wpa_s, (u8 *) "333333") < 0 ||
47 	    wpa_bssid_ignore_add(&wpa_s, (u8 *) "444444") < 0 ||
48 	    wpa_bssid_ignore_del(&wpa_s, (u8 *) "333333") < 0 ||
49 	    wpa_bssid_ignore_del(&wpa_s, (u8 *) "xxxxxx") == 0 ||
50 	    wpa_bssid_ignore_get(&wpa_s, (u8 *) "xxxxxx") != NULL ||
51 	    wpa_bssid_ignore_get(&wpa_s, (u8 *) "111111") == NULL ||
52 	    wpa_bssid_ignore_get(&wpa_s, (u8 *) "222222") == NULL ||
53 	    wpa_bssid_ignore_get(&wpa_s, (u8 *) "444444") == NULL ||
54 	    wpa_bssid_ignore_del(&wpa_s, (u8 *) "111111") < 0 ||
55 	    wpa_bssid_ignore_del(&wpa_s, (u8 *) "222222") < 0 ||
56 	    wpa_bssid_ignore_del(&wpa_s, (u8 *) "444444") < 0 ||
57 	    wpa_bssid_ignore_add(&wpa_s, (u8 *) "111111") < 0 ||
58 	    wpa_bssid_ignore_add(&wpa_s, (u8 *) "222222") < 0 ||
59 	    wpa_bssid_ignore_add(&wpa_s, (u8 *) "333333") < 0)
60 		goto fail;
61 
62 	wpa_bssid_ignore_clear(&wpa_s);
63 
64 	if (wpa_bssid_ignore_add(&wpa_s, (u8 *) "111111") < 0 ||
65 	    wpa_bssid_ignore_add(&wpa_s, (u8 *) "222222") < 0 ||
66 	    wpa_bssid_ignore_add(&wpa_s, (u8 *) "333333") < 0 ||
67 	    wpa_bssid_ignore_add(&wpa_s, (u8 *) "444444") < 0 ||
68 	    !wpa_bssid_ignore_is_listed(&wpa_s, (u8 *) "111111") ||
69 	    wpa_bssid_ignore_del(&wpa_s, (u8 *) "111111") < 0 ||
70 	    wpa_bssid_ignore_is_listed(&wpa_s, (u8 *) "111111") ||
71 	    wpa_bssid_ignore_add(&wpa_s, (u8 *) "111111") < 0)
72 		goto fail;
73 
74 	wpa_bssid_ignore_update(&wpa_s);
75 
76 	if (!wpa_bssid_ignore_is_listed(&wpa_s, (u8 *) "111111"))
77 		goto fail;
78 
79 	ret = 0;
80 fail:
81 	wpa_bssid_ignore_clear(&wpa_s);
82 
83 	if (ret)
84 		wpa_printf(MSG_ERROR, "bssid_ignore module test failure");
85 
86 	return ret;
87 }
88 
89 
90 int wpas_module_tests(void)
91 {
92 	int ret = 0;
93 
94 	wpa_printf(MSG_INFO, "wpa_supplicant module tests");
95 
96 	if (wpas_bssid_ignore_module_tests() < 0)
97 		ret = -1;
98 
99 #ifdef CONFIG_WPS
100 	if (wps_module_tests() < 0)
101 		ret = -1;
102 #endif /* CONFIG_WPS */
103 
104 	if (utils_module_tests() < 0)
105 		ret = -1;
106 
107 	if (common_module_tests() < 0)
108 		ret = -1;
109 
110 	if (crypto_module_tests() < 0)
111 		ret = -1;
112 
113 	return ret;
114 }
115