From f6867efcf895e0010fcdabe0351a5d3fa4a67d89 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Sat, 3 May 2014 10:43:24 +0100 Subject: Fix checking memory allocation return, fixes coverity 1164969 --- monkey/dispatch.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'monkey/dispatch.c') diff --git a/monkey/dispatch.c b/monkey/dispatch.c index c186a89ce..ba15fbd13 100644 --- a/monkey/dispatch.c +++ b/monkey/dispatch.c @@ -55,20 +55,34 @@ monkey_process_command(void) char **argv = NULL; char *p, *r = NULL; handle_command_fn fn = NULL; + char **nargv; if (fgets(buffer, PATH_MAX, stdin) == NULL) { netsurf_quit = true; + return; } - - buffer[strlen(buffer)-1] = '\0'; + + /* remove newline */ + buffer[strlen(buffer) - 1] = '\0'; argv = malloc(sizeof *argv); + if (argv == NULL) { + return; + } argc = 1; *argv = buffer; for (p = r = buffer; *p != '\0'; p++) { if (*p == ' ') { - argv = realloc(argv, sizeof(*argv) * (argc + 1)); + nargv = realloc(argv, sizeof(*argv) * (argc + 1)); + if (nargv == NULL) { + /* reallocation of argument vector failed, try using what is + * already processed. + */ + break; + } else { + argv = nargv; + } argv[argc++] = r = p + 1; *p = '\0'; } -- cgit v1.2.3