From cb2756f19168af61ff455f9edfa2a15eea7cd038 Mon Sep 17 00:00:00 2001 From: Fabian Keil Date: Mon, 28 Apr 2008 09:13:30 +0000 Subject: [PATCH] In load_file(), remember the error reason and fclose() and return later on instead of right away. --- cgisimple.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/cgisimple.c b/cgisimple.c index fcc49a64..08ec46f0 100644 --- a/cgisimple.c +++ b/cgisimple.c @@ -1,4 +1,4 @@ -const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.74 2008/04/26 15:50:56 fabiankeil Exp $"; +const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.75 2008/04/27 13:52:52 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/cgisimple.c,v $ @@ -36,6 +36,10 @@ const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.74 2008/04/26 15:50:56 fabian * * Revisions : * $Log: cgisimple.c,v $ + * Revision 1.75 2008/04/27 13:52:52 fabiankeil + * Move CGI file loading code into load_file() and + * add checks for unexpected errors. + * * Revision 1.74 2008/04/26 15:50:56 fabiankeil * Fix macro name in cgi_show_file() error path. * @@ -2115,6 +2119,7 @@ static jb_err load_file(const char *filename, char **buffer, size_t *length) { FILE *fp; int ret; + jb_err err = JB_ERR_OK; fp = fopen(filename, "rb"); if (NULL == fp) @@ -2149,11 +2154,9 @@ static jb_err load_file(const char *filename, char **buffer, size_t *length) *buffer = (char *)zalloc(*length + 1); if (NULL == *buffer) { - fclose(fp); - return JB_ERR_MEMORY; + err = JB_ERR_MEMORY; } - - if (!fread(*buffer, *length, 1, fp)) + else if (!fread(*buffer, *length, 1, fp)) { /* * May happen if the file size changes between fseek() and @@ -2161,13 +2164,12 @@ static jb_err load_file(const char *filename, char **buffer, size_t *length) */ log_error(LOG_LEVEL_ERROR, "Couldn't completely read file %s.", filename); - fclose(fp); - return JB_ERR_FILE; + err = JB_ERR_FILE; } fclose(fp); - return JB_ERR_OK; + return err; } -- 2.39.2