summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDanny Holman <dholman@gymli.org>2023-07-26 12:06:05 -0500
committerDanny Holman <dholman@gymli.org>2023-07-26 12:06:05 -0500
commite8dac62072e0a3be87ae730326efad7e4d10f50a (patch)
tree5d421d50d88b659c046678a7b412df74d9942f16
parentf3d50195e43fd33e7f36e4e55a84af790b7de5d1 (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.c11
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;