D-Bus (old): Fix memory leak on error path
If setSmartcardModules() fails to allocate memory with os_strdup(), the allocated items in the dict entry were not freed. Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
3d2e2d5d63
commit
a2af1c70c5
1 changed files with 3 additions and 1 deletions
|
@ -1134,25 +1134,27 @@ DBusMessage * wpas_dbus_iface_set_smartcard_modules(
|
||||||
entry.type == DBUS_TYPE_STRING) {
|
entry.type == DBUS_TYPE_STRING) {
|
||||||
os_free(opensc_engine_path);
|
os_free(opensc_engine_path);
|
||||||
opensc_engine_path = os_strdup(entry.str_value);
|
opensc_engine_path = os_strdup(entry.str_value);
|
||||||
|
wpa_dbus_dict_entry_clear(&entry);
|
||||||
if (opensc_engine_path == NULL)
|
if (opensc_engine_path == NULL)
|
||||||
goto error;
|
goto error;
|
||||||
} else if (!strcmp(entry.key, "pkcs11_engine_path") &&
|
} else if (!strcmp(entry.key, "pkcs11_engine_path") &&
|
||||||
entry.type == DBUS_TYPE_STRING) {
|
entry.type == DBUS_TYPE_STRING) {
|
||||||
os_free(pkcs11_engine_path);
|
os_free(pkcs11_engine_path);
|
||||||
pkcs11_engine_path = os_strdup(entry.str_value);
|
pkcs11_engine_path = os_strdup(entry.str_value);
|
||||||
|
wpa_dbus_dict_entry_clear(&entry);
|
||||||
if (pkcs11_engine_path == NULL)
|
if (pkcs11_engine_path == NULL)
|
||||||
goto error;
|
goto error;
|
||||||
} else if (!strcmp(entry.key, "pkcs11_module_path") &&
|
} else if (!strcmp(entry.key, "pkcs11_module_path") &&
|
||||||
entry.type == DBUS_TYPE_STRING) {
|
entry.type == DBUS_TYPE_STRING) {
|
||||||
os_free(pkcs11_module_path);
|
os_free(pkcs11_module_path);
|
||||||
pkcs11_module_path = os_strdup(entry.str_value);
|
pkcs11_module_path = os_strdup(entry.str_value);
|
||||||
|
wpa_dbus_dict_entry_clear(&entry);
|
||||||
if (pkcs11_module_path == NULL)
|
if (pkcs11_module_path == NULL)
|
||||||
goto error;
|
goto error;
|
||||||
} else {
|
} else {
|
||||||
wpa_dbus_dict_entry_clear(&entry);
|
wpa_dbus_dict_entry_clear(&entry);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
wpa_dbus_dict_entry_clear(&entry);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
os_free(wpa_s->conf->opensc_engine_path);
|
os_free(wpa_s->conf->opensc_engine_path);
|
||||||
|
|
Loading…
Reference in a new issue