Fixed several resource and memory leaks
authorPhilipp Kloke <philipp.kloke@web.de>
Sun, 31 Mar 2013 10:02:30 +0000 (12:02 +0200)
committerCyrill Gorcunov <gorcunov@gmail.com>
Sun, 31 Mar 2013 22:16:27 +0000 (02:16 +0400)
Bug found by: CppCheck 1.59 (static source analysis tool)

Signed-off-by: Philipp Kloke <philipp.kloke@web.de>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
assemble.c
rdoff/ldrdf.c
rdoff/rdfload.c
rdoff/rdlib.c

index 235be13..b119f86 100644 (file)
@@ -424,6 +424,7 @@ int64_t assemble(int32_t segment, int64_t offset, int bits, uint32_t cp,
         } else if (fseek(fp, 0L, SEEK_END) < 0) {
             error(ERR_NONFATAL, "`incbin': unable to seek on file `%s'",
                   fname);
+            fclose(fp);
         } else {
             static char buf[4096];
             size_t t = instruction->times;
index 2ddada3..7c61d4c 100644 (file)
@@ -1275,12 +1275,14 @@ int main(int argc, char **argv)
                     if ((p = strchr(buf, '\n')) != NULL)
                         *p = '\0';
                     if (i >= 128) {
+                        fclose(f);
                         fprintf(stderr, "ldrdf: too many input files\n");
                         exit(1);
                     }
                     *(respstrings + i) = newstr(buf);
                     argc++, i++;
                 }
+                fclose(f);
                 break;
             }
         case '2':
index 4fd3dbd..5a7ab63 100644 (file)
@@ -94,6 +94,7 @@ rdfmodule *rdfload(const char *filename)
         if (f->d)
             free(f->d);
         free(f);
+        free(hdr);
         return NULL;
     }
 
index 31dbdb4..838f140 100644 (file)
@@ -59,7 +59,7 @@ char *rdl_errors[5] = {
 
 int rdl_verify(const char *filename)
 {
-    FILE *fp = fopen(filename, "rb");
+    FILE *fp;
     char buf[257];
     int i;
     int32_t length;
@@ -69,6 +69,7 @@ int rdl_verify(const char *filename)
     if (lastresult != -1 && !strcmp(filename, lastverified))
         return lastresult;
 
+    fp = fopen(filename, "rb");
     strcpy(lastverified, filename);
 
     if (!fp)