From e8dac62072e0a3be87ae730326efad7e4d10f50a Mon Sep 17 00:00:00 2001 From: Danny Holman Date: Wed, 26 Jul 2023 12:06:05 -0500 Subject: 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 --- server/src/mini-rat.c | 11 +++++++---- 1 file 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; -- cgit v1.2.3