17f93d6fa14a343127754c33a03cf2f641b6ff6e4Dmitry Shmidt/*
27f93d6fa14a343127754c33a03cf2f641b6ff6e4Dmitry Shmidt * wpa_supplicant module tests
37f93d6fa14a343127754c33a03cf2f641b6ff6e4Dmitry Shmidt * Copyright (c) 2014, Jouni Malinen <j@w1.fi>
47f93d6fa14a343127754c33a03cf2f641b6ff6e4Dmitry Shmidt *
57f93d6fa14a343127754c33a03cf2f641b6ff6e4Dmitry Shmidt * This software may be distributed under the terms of the BSD license.
67f93d6fa14a343127754c33a03cf2f641b6ff6e4Dmitry Shmidt * See README for more details.
77f93d6fa14a343127754c33a03cf2f641b6ff6e4Dmitry Shmidt */
87f93d6fa14a343127754c33a03cf2f641b6ff6e4Dmitry Shmidt
97f93d6fa14a343127754c33a03cf2f641b6ff6e4Dmitry Shmidt#include "utils/includes.h"
107f93d6fa14a343127754c33a03cf2f641b6ff6e4Dmitry Shmidt
117f93d6fa14a343127754c33a03cf2f641b6ff6e4Dmitry Shmidt#include "utils/common.h"
12f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt#include "wpa_supplicant_i.h"
13f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt#include "blacklist.h"
14f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt
15f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt
16f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidtstatic int wpas_blacklist_module_tests(void)
17f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt{
18f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	struct wpa_supplicant wpa_s;
19f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	int ret = -1;
20f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt
21f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	os_memset(&wpa_s, 0, sizeof(wpa_s));
22f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt
23f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	wpa_blacklist_clear(&wpa_s);
24f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt
25f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	if (wpa_blacklist_get(NULL, NULL) != NULL ||
26f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	    wpa_blacklist_get(NULL, (u8 *) "123456") != NULL ||
27f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	    wpa_blacklist_get(&wpa_s, NULL) != NULL ||
28f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	    wpa_blacklist_get(&wpa_s, (u8 *) "123456") != NULL)
29f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt		goto fail;
30f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt
31f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	if (wpa_blacklist_add(NULL, NULL) == 0 ||
32f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	    wpa_blacklist_add(NULL, (u8 *) "123456") == 0 ||
33f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	    wpa_blacklist_add(&wpa_s, NULL) == 0)
34f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt		goto fail;
35f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt
36f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	if (wpa_blacklist_del(NULL, NULL) == 0 ||
37f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	    wpa_blacklist_del(NULL, (u8 *) "123456") == 0 ||
38f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	    wpa_blacklist_del(&wpa_s, NULL) == 0 ||
39f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	    wpa_blacklist_del(&wpa_s, (u8 *) "123456") == 0)
40f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt		goto fail;
41f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt
42f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	if (wpa_blacklist_add(&wpa_s, (u8 *) "111111") < 0 ||
43f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	    wpa_blacklist_add(&wpa_s, (u8 *) "111111") < 0 ||
44f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	    wpa_blacklist_add(&wpa_s, (u8 *) "222222") < 0 ||
45f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	    wpa_blacklist_add(&wpa_s, (u8 *) "333333") < 0 ||
46f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	    wpa_blacklist_add(&wpa_s, (u8 *) "444444") < 0 ||
47f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	    wpa_blacklist_del(&wpa_s, (u8 *) "333333") < 0 ||
48f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	    wpa_blacklist_del(&wpa_s, (u8 *) "xxxxxx") == 0 ||
49f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	    wpa_blacklist_get(&wpa_s, (u8 *) "xxxxxx") != NULL ||
50f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	    wpa_blacklist_get(&wpa_s, (u8 *) "111111") == NULL ||
51f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	    wpa_blacklist_get(&wpa_s, (u8 *) "222222") == NULL ||
52f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	    wpa_blacklist_get(&wpa_s, (u8 *) "444444") == NULL ||
53f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	    wpa_blacklist_del(&wpa_s, (u8 *) "111111") < 0 ||
54f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	    wpa_blacklist_del(&wpa_s, (u8 *) "222222") < 0 ||
55f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	    wpa_blacklist_del(&wpa_s, (u8 *) "444444") < 0 ||
56f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	    wpa_blacklist_add(&wpa_s, (u8 *) "111111") < 0 ||
57f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	    wpa_blacklist_add(&wpa_s, (u8 *) "222222") < 0 ||
58f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	    wpa_blacklist_add(&wpa_s, (u8 *) "333333") < 0)
59f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt		goto fail;
60f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt
61f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	ret = 0;
62f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidtfail:
63f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	wpa_blacklist_clear(&wpa_s);
64f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt
65f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	if (ret)
66f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt		wpa_printf(MSG_ERROR, "blacklist module test failure");
67f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt
68f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	return ret;
69f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt}
70f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt
717f93d6fa14a343127754c33a03cf2f641b6ff6e4Dmitry Shmidt
727f93d6fa14a343127754c33a03cf2f641b6ff6e4Dmitry Shmidtint wpas_module_tests(void)
737f93d6fa14a343127754c33a03cf2f641b6ff6e4Dmitry Shmidt{
747f93d6fa14a343127754c33a03cf2f641b6ff6e4Dmitry Shmidt	int ret = 0;
757f93d6fa14a343127754c33a03cf2f641b6ff6e4Dmitry Shmidt
767f93d6fa14a343127754c33a03cf2f641b6ff6e4Dmitry Shmidt	wpa_printf(MSG_INFO, "wpa_supplicant module tests");
777f93d6fa14a343127754c33a03cf2f641b6ff6e4Dmitry Shmidt
78f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	if (wpas_blacklist_module_tests() < 0)
79f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt		ret = -1;
80f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt
817f93d6fa14a343127754c33a03cf2f641b6ff6e4Dmitry Shmidt#ifdef CONFIG_WPS
827f93d6fa14a343127754c33a03cf2f641b6ff6e4Dmitry Shmidt	{
837f93d6fa14a343127754c33a03cf2f641b6ff6e4Dmitry Shmidt		int wps_module_tests(void);
847f93d6fa14a343127754c33a03cf2f641b6ff6e4Dmitry Shmidt		if (wps_module_tests() < 0)
857f93d6fa14a343127754c33a03cf2f641b6ff6e4Dmitry Shmidt			ret = -1;
867f93d6fa14a343127754c33a03cf2f641b6ff6e4Dmitry Shmidt	}
877f93d6fa14a343127754c33a03cf2f641b6ff6e4Dmitry Shmidt#endif /* CONFIG_WPS */
887f93d6fa14a343127754c33a03cf2f641b6ff6e4Dmitry Shmidt
8976cd2cc44b62e858f1897ce58f4ce7d0174e8839Dmitry Shmidt	{
9076cd2cc44b62e858f1897ce58f4ce7d0174e8839Dmitry Shmidt		int utils_module_tests(void);
9176cd2cc44b62e858f1897ce58f4ce7d0174e8839Dmitry Shmidt		if (utils_module_tests() < 0)
9276cd2cc44b62e858f1897ce58f4ce7d0174e8839Dmitry Shmidt			ret = -1;
9376cd2cc44b62e858f1897ce58f4ce7d0174e8839Dmitry Shmidt	}
9476cd2cc44b62e858f1897ce58f4ce7d0174e8839Dmitry Shmidt
95717574375e969e8272c6d1a26137286eac158abbDmitry Shmidt	{
96717574375e969e8272c6d1a26137286eac158abbDmitry Shmidt		int common_module_tests(void);
97717574375e969e8272c6d1a26137286eac158abbDmitry Shmidt		if (common_module_tests() < 0)
98717574375e969e8272c6d1a26137286eac158abbDmitry Shmidt			ret = -1;
99717574375e969e8272c6d1a26137286eac158abbDmitry Shmidt	}
100717574375e969e8272c6d1a26137286eac158abbDmitry Shmidt
1017f93d6fa14a343127754c33a03cf2f641b6ff6e4Dmitry Shmidt	return ret;
1027f93d6fa14a343127754c33a03cf2f641b6ff6e4Dmitry Shmidt}
103