wpa_cli: Fix NULL dereference on printf string argument

In wpa_cli_cmd_interface(), try_connection(), and main(), ctrl_ifname
may be NULL and could be dereferenced depending on the printf()
implementation.

Signed-off-by: Eytan Lifshitz <eytan.lifshitz@intel.com>
This commit is contained in:
Eytan Lifshitz 2015-01-18 23:57:30 -05:00 committed by Jouni Malinen
parent 414f23d8b9
commit 30f459c098

View File

@ -1577,6 +1577,10 @@ static int wpa_cli_cmd_interface(struct wpa_ctrl *ctrl, int argc, char *argv[])
wpa_cli_close_connection(); wpa_cli_close_connection();
os_free(ctrl_ifname); os_free(ctrl_ifname);
ctrl_ifname = os_strdup(argv[0]); ctrl_ifname = os_strdup(argv[0]);
if (!ctrl_ifname) {
printf("Failed to allocate memory\n");
return 0;
}
if (wpa_cli_open_connection(ctrl_ifname, 1) == 0) { if (wpa_cli_open_connection(ctrl_ifname, 1) == 0) {
printf("Connected to interface '%s.\n", ctrl_ifname); printf("Connected to interface '%s.\n", ctrl_ifname);
@ -3743,7 +3747,8 @@ static void try_connection(void *eloop_ctx, void *timeout_ctx)
if (!wpa_cli_open_connection(ctrl_ifname, 1) == 0) { if (!wpa_cli_open_connection(ctrl_ifname, 1) == 0) {
if (!warning_displayed) { if (!warning_displayed) {
printf("Could not connect to wpa_supplicant: " printf("Could not connect to wpa_supplicant: "
"%s - re-trying\n", ctrl_ifname); "%s - re-trying\n",
ctrl_ifname ? ctrl_ifname : "(nil)");
warning_displayed = 1; warning_displayed = 1;
} }
eloop_register_timeout(1, 0, try_connection, NULL, NULL); eloop_register_timeout(1, 0, try_connection, NULL, NULL);
@ -4004,7 +4009,8 @@ int main(int argc, char *argv[])
wpa_cli_open_connection(ctrl_ifname, 0) < 0) { wpa_cli_open_connection(ctrl_ifname, 0) < 0) {
fprintf(stderr, "Failed to connect to non-global " fprintf(stderr, "Failed to connect to non-global "
"ctrl_ifname: %s error: %s\n", "ctrl_ifname: %s error: %s\n",
ctrl_ifname, strerror(errno)); ctrl_ifname ? ctrl_ifname : "(nil)",
strerror(errno));
return -1; return -1;
} }