diff options
author | Danny Holman <dholman@gymli.org> | 2023-07-26 12:06:05 -0500 |
---|---|---|
committer | Danny Holman <dholman@gymli.org> | 2023-07-26 12:06:05 -0500 |
commit | e8dac62072e0a3be87ae730326efad7e4d10f50a (patch) | |
tree | 5d421d50d88b659c046678a7b412df74d9942f16 | |
parent | f3d50195e43fd33e7f36e4e55a84af790b7de5d1 (diff) |
server: fix run_exec printing garbage data
Fix a bug in which run_exec would print garbage values into the socket
and to stdout.
Signed-off-by: Danny Holman <dholman@gymli.org>
-rw-r--r-- | server/src/mini-rat.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/server/src/mini-rat.c b/server/src/mini-rat.c index 12e44cf..039b59d 100644 --- a/server/src/mini-rat.c +++ b/server/src/mini-rat.c @@ -54,8 +54,8 @@ void run_exec(const char **argv) { if (cur_session == 0) return; - char buffer[4096]; - strcat(buffer, "EXEC "); + char *buffer = malloc(4096); + strcpy(buffer, "EXEC "); size_t idx = 0; const char *temp = argv[idx]; while (temp != NULL) { @@ -63,15 +63,18 @@ void run_exec(const char **argv) { strcat(buffer, " "); temp = argv[++idx]; } + buffer[strlen(buffer)-1] = '\0'; strcat(buffer, "\r\n"); - write_session(cur_session, buffer, strlen(buffer)); + write_session(cur_session, buffer, 4096); + memset(buffer, 0, 4096); read_session(cur_session, buffer, 4096); printf(buffer); + free(buffer); } void parse_cmd(char *line) { - const char **tokens = str_split(line, " "); + const char **tokens = (const char**)str_split(line, " "); if (tokens == NULL) return; |