diff options
author | LemonBoy <thatlemon@gmail.com> | 2017-11-11 12:37:51 +0100 |
---|---|---|
committer | LemonBoy <thatlemon@gmail.com> | 2017-11-11 12:37:51 +0100 |
commit | 7605f67f95b6ee1ac26dd8fb7f3121f319497943 (patch) | |
tree | 784a50609106abfdda644b96f31c44438a26da6f | |
parent | 7e619ed990503faf45fc1ae1e28a3a6062dc7532 (diff) | |
download | irssi-7605f67f95b6ee1ac26dd8fb7f3121f319497943.zip |
Prevent a UAF error during the execution of some commands
Some arguments were free'd first and then printed, leading to gibberish
being output to screen or a crash.
Found by Joseph Bisch.
Closes: !GL17
-rw-r--r-- | src/fe-common/core/fe-channels.c | 2 | ||||
-rw-r--r-- | src/fe-common/core/fe-server.c | 2 | ||||
-rw-r--r-- | src/fe-common/irc/fe-ircnet.c | 2 |
3 files changed, 3 insertions, 3 deletions
diff --git a/src/fe-common/core/fe-channels.c b/src/fe-common/core/fe-channels.c index 8e434ab5..5cad51a7 100644 --- a/src/fe-common/core/fe-channels.c +++ b/src/fe-common/core/fe-channels.c @@ -278,9 +278,9 @@ static void cmd_channel_add_modify(const char *data, gboolean add) rec = channel_setup_find(channel, chatnet); if (rec == NULL) { if (add == FALSE) { - cmd_params_free(free_arg); printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE, TXT_CHANSETUP_NOT_FOUND, channel, chatnet); + cmd_params_free(free_arg); return; } diff --git a/src/fe-common/core/fe-server.c b/src/fe-common/core/fe-server.c index 810afe83..074a83f3 100644 --- a/src/fe-common/core/fe-server.c +++ b/src/fe-common/core/fe-server.c @@ -136,9 +136,9 @@ static void cmd_server_add_modify(const char *data, gboolean add) if (rec == NULL) { if (add == FALSE) { - cmd_params_free(free_arg); printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE, TXT_SETUPSERVER_NOT_FOUND, addr, port); + cmd_params_free(free_arg); return; } diff --git a/src/fe-common/irc/fe-ircnet.c b/src/fe-common/irc/fe-ircnet.c index 8f1d2efd..5ae5ac05 100644 --- a/src/fe-common/irc/fe-ircnet.c +++ b/src/fe-common/irc/fe-ircnet.c @@ -106,9 +106,9 @@ static void cmd_network_add_modify(const char *data, gboolean add) rec = ircnet_find(name); if (rec == NULL) { if (add == FALSE) { - cmd_params_free(free_arg); printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE, IRCTXT_NETWORK_NOT_FOUND, name); + cmd_params_free(free_arg); return; } |