From 21854ccdb250e6e81311b4317934e8c953b252a8 Mon Sep 17 00:00:00 2001 From: Kenny Root Date: Wed, 17 Feb 2010 18:31:48 -0800 Subject: [PATCH] Filename check and free allocated strings Make sure file is valid before we try to read it. Also free all the strings we allocate in various functions so we don't leak memory. Change-Id: Ica3c8dae992e73718c79c12ff5d7e315c290caea --- edify/expr.c | 3 +++ edify/main.c | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/edify/expr.c b/edify/expr.c index 72e5100..df3c1ab 100644 --- a/edify/expr.c +++ b/edify/expr.c @@ -67,6 +67,7 @@ char* ConcatFn(const char* name, State* state, int argc, Expr* argv[]) { for (i = 0; i < argc; ++i) { free(strings[i]); } + free(strings); return result; } @@ -389,11 +390,13 @@ int ReadArgs(State* state, Expr* argv[], int count, ...) { for (j = 0; j < i; ++j) { free(args[j]); } + free(args); return -1; } *(va_arg(v, char**)) = args[i]; } va_end(v); + free(args); return 0; } diff --git a/edify/main.c b/edify/main.c index 0e36108..a2b74ad 100644 --- a/edify/main.c +++ b/edify/main.c @@ -181,6 +181,10 @@ int main(int argc, char** argv) { } FILE* f = fopen(argv[1], "r"); + if (f == NULL) { + printf("%s: %s: No such file or directory\n", argv[0], argv[1]); + return 1; + } char buffer[8192]; int size = fread(buffer, 1, 8191, f); fclose(f);