Coverity: Negative returns: CID 107
authorNelson Ferreira <nelson.ferreira@ieee.org>
Fri, 20 Jan 2012 03:36:59 +0000 (22:36 -0500)
committerNelson Ferreira <nelson.ferreira@ieee.org>
Fri, 20 Jan 2012 03:36:59 +0000 (22:36 -0500)
* src/dumper.c (pdump): Make sure not to take invalid paths even
when abort is a no-op...

Signed-off-by: Nelson Ferreira <nelson.ferreira@ieee.org>
src/dumper.c

index 8987436..1809fb1 100644 (file)
@@ -1072,35 +1072,38 @@ pdump(const char *dumpfile)
        if ( pdump_fd < 0 ) {
                stderr_out("Could not open dump file: %s", dumpfile);
                abort();
-       }
-       pdump_out = fdopen(pdump_fd, "w");
-       if ( pdump_out < 0 ) {
-               stderr_out("Could not fdopen dump file: %s %d", dumpfile, pdump_fd);
-               abort();
-       }
-
-       fwrite(&header, sizeof(header), 1, pdump_out);
-       PDUMP_ALIGN_OUTPUT(max_align_t);
-
-       pdump_scan_by_alignment(pdump_dump_data);
-
-       fseek(pdump_out, header.stab_offset, SEEK_SET);
+       } else {
+               pdump_out = fdopen(pdump_fd, "w");
+               if ( pdump_out < 0 ) {
+                       stderr_out("Could not fdopen dump file: %s %d", 
+                                  dumpfile, pdump_fd);
+                       abort();
+               } else {
 
-       pdump_dump_root_struct_ptrs();
-       pdump_dump_opaques();
-       pdump_dump_rtables();
-       pdump_dump_root_objects();
+                       fwrite(&header, sizeof(header), 1, pdump_out);
+                       PDUMP_ALIGN_OUTPUT(max_align_t);
 
-       fclose(pdump_out);
-       close(pdump_fd);
+                       pdump_scan_by_alignment(pdump_dump_data);
 
-       xfree(pdump_buf);
+                       fseek(pdump_out, header.stab_offset, SEEK_SET);
 
-       xfree(pdump_hash);
+                       pdump_dump_root_struct_ptrs();
+                       pdump_dump_opaques();
+                       pdump_dump_rtables();
+                       pdump_dump_root_objects();
+                       
+                       fclose(pdump_out);
+                       close(pdump_fd);
+                       
+                       xfree(pdump_buf);
 
-       Vterminal_console = t_console;
-       Vterminal_frame = t_frame;
-       Vterminal_device = t_device;
+                       xfree(pdump_hash);
+                       
+                       Vterminal_console = t_console;
+                       Vterminal_frame = t_frame;
+                       Vterminal_device = t_device;
+               }
+       }
 }
 
 static int pdump_load_check(void)