about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--AUTHORS1
-rw-r--r--CMakeLists.txt2
-rw-r--r--src/libwifi/parse/management/common.c8
-rw-r--r--src/libwifi/parse/misc/security.c16
4 files changed, 14 insertions, 13 deletions
diff --git a/AUTHORS b/AUTHORS index 8c7299c..b6ea398 100644 --- a/AUTHORS +++ b/AUTHORS
@@ -8,3 +8,4 @@ Marc Egerton
8Sebastian Kinne 8Sebastian Kinne
9Henry Pitcairn 9Henry Pitcairn
10Hak5 LLC 10Hak5 LLC
11Google LLC \ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt index 0f2bab9..a0d9809 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt
@@ -5,7 +5,7 @@ project(wifi DESCRIPTION "802.11 Parsing / Generation library" VERSION 0.1)
5execute_process(COMMAND git rev-parse --abbrev-ref HEAD OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE GITBRANCH) 5execute_process(COMMAND git rev-parse --abbrev-ref HEAD OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE GITBRANCH)
6execute_process(COMMAND git log -1 --pretty=format:%h OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE GITHASH) 6execute_process(COMMAND git log -1 --pretty=format:%h OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE GITHASH)
7execute_process(COMMAND date OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE BUILDTIME) 7execute_process(COMMAND date OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE BUILDTIME)
8set(LIBWIFI_VERSION "0.0.5") 8set(LIBWIFI_VERSION "0.0.6")
9 9
10set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu17") 10set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu17")
11set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra") 11set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra")
diff --git a/src/libwifi/parse/management/common.c b/src/libwifi/parse/management/common.c index e847415..5e4fbf6 100644 --- a/src/libwifi/parse/management/common.c +++ b/src/libwifi/parse/management/common.c
@@ -68,7 +68,9 @@ void libwifi_handle_ssid_tag(void *target, int target_type, const char *tag_data
68int libwifi_bss_handle_rsn_tag(struct libwifi_bss *bss, const unsigned char *rsn_data, int rsn_len) { 68int libwifi_bss_handle_rsn_tag(struct libwifi_bss *bss, const unsigned char *rsn_data, int rsn_len) {
69 struct libwifi_rsn_info rsn_info = {0}; 69 struct libwifi_rsn_info rsn_info = {0};
70 70
71 bss->encryption_info &= ~(unsigned int) WEP; 71 if (bss->encryption_info & WEP) {
72 bss->encryption_info &= ~(unsigned int) WEP;
73 }
72 74
73 int min_len = sizeof(rsn_info.rsn_version) + sizeof(struct libwifi_cipher_suite); 75 int min_len = sizeof(rsn_info.rsn_version) + sizeof(struct libwifi_cipher_suite);
74 if (rsn_len < min_len) { 76 if (rsn_len < min_len) {
@@ -105,7 +107,9 @@ int libwifi_bss_handle_msft_tag(struct libwifi_bss *bss, const unsigned char *ms
105 107
106 switch (vendor_header->type) { 108 switch (vendor_header->type) {
107 case MICROSOFT_OUI_TYPE_WPA: 109 case MICROSOFT_OUI_TYPE_WPA:
108 bss->encryption_info &= ~(unsigned int) WEP; 110 if (bss->encryption_info & WEP) {
111 bss->encryption_info &= ~(unsigned int) WEP;
112 }
109 bss->encryption_info |= WPA; 113 bss->encryption_info |= WPA;
110 114
111 // Skip 4 bytes for the OUI (3) and Vendor Tag Type (1) 115 // Skip 4 bytes for the OUI (3) and Vendor Tag Type (1)
diff --git a/src/libwifi/parse/misc/security.c b/src/libwifi/parse/misc/security.c index bf211f7..7a9682b 100644 --- a/src/libwifi/parse/misc/security.c +++ b/src/libwifi/parse/misc/security.c
@@ -62,14 +62,13 @@ int libwifi_get_rsn_info(struct libwifi_rsn_info *info, const unsigned char *tag
62 info->num_pairwise_cipher_suites = suite_count; 62 info->num_pairwise_cipher_suites = suite_count;
63 63
64 // Iterate through the found Pairwise Ciphers, adding them each time 64 // Iterate through the found Pairwise Ciphers, adding them each time
65 struct wifi_cipher_suite *cur_cipher_suite = NULL; 65 struct libwifi_cipher_suite *cur_cipher_suite = NULL;
66 for (int i = 0; i < suite_count; ++i) { 66 for (int i = 0; i < suite_count; ++i) {
67 if (data > tag_end) { 67 if (data > tag_end) {
68 return -EINVAL; 68 return -EINVAL;
69 } 69 }
70 cur_cipher_suite = (struct wifi_cipher_suite *) data; 70 cur_cipher_suite = (struct libwifi_cipher_suite *) data;
71 memcpy(&info->pairwise_cipher_suites[i], cur_cipher_suite, sizeof(struct libwifi_cipher_suite)); 71 memcpy(&info->pairwise_cipher_suites[i], cur_cipher_suite, sizeof(struct libwifi_cipher_suite));
72 info->pairwise_cipher_suites[i].suite_type = info->pairwise_cipher_suites[i].suite_type;
73 data += sizeof(struct libwifi_cipher_suite); 72 data += sizeof(struct libwifi_cipher_suite);
74 } 73 }
75 74
@@ -92,9 +91,8 @@ int libwifi_get_rsn_info(struct libwifi_rsn_info *info, const unsigned char *tag
92 if (data > tag_end) { 91 if (data > tag_end) {
93 return -EINVAL; 92 return -EINVAL;
94 } 93 }
95 cur_cipher_suite = (struct wifi_cipher_suite *) data; 94 cur_cipher_suite = (struct libwifi_cipher_suite *) data;
96 memcpy(&info->auth_key_mgmt_suites[i], cur_cipher_suite, sizeof(struct libwifi_cipher_suite)); 95 memcpy(&info->auth_key_mgmt_suites[i], cur_cipher_suite, sizeof(struct libwifi_cipher_suite));
97 info->auth_key_mgmt_suites[i].suite_type = info->auth_key_mgmt_suites[i].suite_type;
98 data += sizeof(struct libwifi_cipher_suite); 96 data += sizeof(struct libwifi_cipher_suite);
99 } 97 }
100 98
@@ -345,14 +343,13 @@ int libwifi_get_wpa_info(struct libwifi_wpa_info *info, const unsigned char *tag
345 info->num_unicast_cipher_suites = suite_count; 343 info->num_unicast_cipher_suites = suite_count;
346 344
347 // Iterate through the found Unicast Ciphers, adding them each time 345 // Iterate through the found Unicast Ciphers, adding them each time
348 struct wifi_cipher_suite *cur_cipher_suite = NULL; 346 struct libwifi_cipher_suite *cur_cipher_suite = NULL;
349 for (int i = 0; i < suite_count; ++i) { 347 for (int i = 0; i < suite_count; ++i) {
350 if (data > tag_end) { 348 if (data > tag_end) {
351 return -EINVAL; 349 return -EINVAL;
352 } 350 }
353 cur_cipher_suite = (struct wifi_cipher_suite *) data; 351 cur_cipher_suite = (struct libwifi_cipher_suite *) data;
354 memcpy(&info->unicast_cipher_suites[i], cur_cipher_suite, sizeof(struct libwifi_cipher_suite)); 352 memcpy(&info->unicast_cipher_suites[i], cur_cipher_suite, sizeof(struct libwifi_cipher_suite));
355 info->unicast_cipher_suites[i].suite_type = info->unicast_cipher_suites[i].suite_type;
356 data += sizeof(struct libwifi_cipher_suite); 353 data += sizeof(struct libwifi_cipher_suite);
357 } 354 }
358 355
@@ -375,9 +372,8 @@ int libwifi_get_wpa_info(struct libwifi_wpa_info *info, const unsigned char *tag
375 if (data > tag_end) { 372 if (data > tag_end) {
376 return -EINVAL; 373 return -EINVAL;
377 } 374 }
378 cur_cipher_suite = (struct wifi_cipher_suite *) data; 375 cur_cipher_suite = (struct libwifi_cipher_suite *) data;
379 memcpy(&info->auth_key_mgmt_suites[i], cur_cipher_suite, sizeof(struct libwifi_cipher_suite)); 376 memcpy(&info->auth_key_mgmt_suites[i], cur_cipher_suite, sizeof(struct libwifi_cipher_suite));
380 info->auth_key_mgmt_suites[i].suite_type = info->auth_key_mgmt_suites[i].suite_type;
381 data += sizeof(struct libwifi_cipher_suite); 377 data += sizeof(struct libwifi_cipher_suite);
382 } 378 }
383 379