diff options
-rw-r--r-- | bounce.h | 6 | ||||
-rw-r--r-- | client.c | 4 |
2 files changed, 6 insertions, 4 deletions
diff --git a/bounce.h b/bounce.h index 434a1f8..129dd7b 100644 --- a/bounce.h +++ b/bounce.h @@ -45,9 +45,9 @@ bool verbose; enum { ParamCap = 15 }; struct Message { - const char *origin; - const char *cmd; - const char *params[ParamCap]; + char *origin; + char *cmd; + char *params[ParamCap]; }; static inline struct Message parse(char *line) { diff --git a/client.c b/client.c index 35faa4b..79f55ae 100644 --- a/client.c +++ b/client.c @@ -23,6 +23,7 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#include <strings.h> #include <sysexits.h> #include <tls.h> #include <unistd.h> @@ -127,7 +128,7 @@ static void handleUser(struct Client *client, struct Message *msg) { static void handlePass(struct Client *client, struct Message *msg) { if (!clientPass) return; if (!msg->params[0]) { - passRequired(client); + client->error = true; return; } if (!strcmp(crypt(msg->params[0], clientPass), clientPass)) { @@ -136,6 +137,7 @@ static void handlePass(struct Client *client, struct Message *msg) { } else { passRequired(client); } + explicit_bzero(msg->params[0], strlen(msg->params[0])); } static void handleCap(struct Client *client, struct Message *msg) { |