Fix couple of memory leaks in wpa_config_get_all()
authorJouni Malinen <j@w1.fi>
Wed, 30 Dec 2009 20:37:23 +0000 (22:37 +0200)
committerJouni Malinen <j@w1.fi>
Wed, 30 Dec 2009 20:37:23 +0000 (22:37 +0200)
wpa_supplicant/config.c

index 692b52f..da56dc8 100644 (file)
@@ -1860,12 +1860,18 @@ char ** wpa_config_get_all(struct wpa_ssid *ssid, int get_keys)
                if (field->key_data && !get_keys)
                        continue;
                value = field->writer(field, ssid);
-               if (value == NULL || os_strlen(value) == 0)
+               if (value == NULL)
                        continue;
+               if (os_strlen(value) == 0) {
+                       os_free(value);
+                       continue;
+               }
 
                key = os_strdup(field->name);
-               if (key == NULL)
+               if (key == NULL) {
+                       os_free(value);
                        goto err;
+               }
 
                props[fields_num * 2] = key;
                props[fields_num * 2 + 1] = value;