]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
dbus: Verify WPA/RSN IE parser result before returning data
authorJouni Malinen <j@w1.fi>
Sat, 4 Sep 2010 19:01:29 +0000 (22:01 +0300)
committerJouni Malinen <j@w1.fi>
Sat, 4 Sep 2010 19:01:29 +0000 (22:01 +0300)
wpa_supplicant/dbus/dbus_new_handlers.c

index 602ad34c102e761b2c407627e9dd19bd135fd472..e2b5e50dd2b7e02a41279723be48816ccfe9051e 100644 (file)
@@ -2726,8 +2726,11 @@ DBusMessage * wpas_dbus_getter_bss_wpa(DBusMessage *message,
 
        os_memset(&wpa_data, 0, sizeof(wpa_data));
        ie = wpa_bss_get_vendor_ie(res, WPA_IE_VENDOR_TYPE);
-       if (ie)
-               wpa_parse_wpa_ie(ie, 2 + ie[1], &wpa_data);
+       if (ie) {
+               if (wpa_parse_wpa_ie(ie, 2 + ie[1], &wpa_data) < 0)
+                       return wpas_dbus_error_unknown_error(message,
+                                                            "invalid WPA IE");
+       }
 
        return wpas_dbus_get_bss_security_prop(message, &wpa_data);
 }
@@ -2756,8 +2759,11 @@ DBusMessage * wpas_dbus_getter_bss_rsn(DBusMessage *message,
 
        os_memset(&wpa_data, 0, sizeof(wpa_data));
        ie = wpa_bss_get_ie(res, WLAN_EID_RSN);
-       if (ie)
-               wpa_parse_wpa_ie(ie, 2 + ie[1], &wpa_data);
+       if (ie) {
+               if (wpa_parse_wpa_ie(ie, 2 + ie[1], &wpa_data) < 0)
+                       return wpas_dbus_error_unknown_error(message,
+                                                            "invalid RSN IE");
+       }
 
        return wpas_dbus_get_bss_security_prop(message, &wpa_data);
 }