PATCH 21.5
Coverity Scan reports some problems in dumper.c. Here a four changesets
that fix the reported problems:
diff --git a/src/ChangeLog b/src/ChangeLog
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,7 @@
+2014-12-13 Marcus Crestani <crestani(a)xemacs.org>
+
+ * dumper.c (pdump): fdopen returns NULL when it fails.
+
2014-12-05 Jerry James <james(a)xemacs.org>
* src/fileio.c (Ffile_truename): Fix off-by-one error.
diff --git a/src/dumper.c b/src/dumper.c
--- a/src/dumper.c
+++ b/src/dumper.c
@@ -2135,7 +2135,7 @@
report_file_error ("Unable to open dump file",
build_ascstring (EMACS_PROGNAME ".dmp"));
pdump_out = fdopen (pdump_fd, "w");
- if (pdump_out < 0)
+ if (pdump_out == NULL)
report_file_error ("Unable to open dump file for writing",
build_ascstring (EMACS_PROGNAME ".dmp"));
+2014-12-13 Marcus Crestani <crestani(a)xemacs.org>
+
+ * dumper.c (pdump_file_get): Check return value of lseek.
+
2014-12-13 Marcus Crestani <crestani(a)xemacs.org>
* dumper.c (pdump): fdopen returns NULL when it fails.
diff --git a/src/dumper.c b/src/dumper.c
--- a/src/dumper.c
+++ b/src/dumper.c
@@ -2553,7 +2553,11 @@
return 0;
}
- lseek (fd, 0, SEEK_SET);
+ if (lseek (fd, 0, SEEK_SET) == -1)
+ {
+ retry_close (fd);
+ return 0;
+ }
#ifdef HAVE_MMAP
/* Unix 98 requires that sys/mman.h define MAP_FAILED,
diff --git a/src/ChangeLog b/src/ChangeLog
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+2014-12-13 Marcus Crestani <crestani(a)xemacs.org>
+
+ * dumper.c (pdump_align_stream):
+ * dumper.c (pdump): Check return value of fseek.
+
2014-12-13 Marcus Crestani <crestani(a)xemacs.org>
* dumper.c (pdump_file_get): Check return value of lseek.
diff --git a/src/dumper.c b/src/dumper.c
--- a/src/dumper.c
+++ b/src/dumper.c
@@ -206,7 +206,13 @@
OFF_T offset = FTELL (stream);
OFF_T adjustment = ALIGN_SIZE (offset, alignment) - offset;
if (adjustment)
- FSEEK (stream, adjustment, SEEK_CUR);
+ {
+ if (FSEEK (stream, adjustment, SEEK_CUR) == -1)
+ {
+ report_file_error ("Unable to fseek dump file",
+ build_ascstring (EMACS_PROGNAME ".dmp"));
+ }
+ }
}
#define PDUMP_ALIGN_OUTPUT(type) pdump_align_stream (pdump_out, ALIGNOF (type))
@@ -2168,7 +2174,11 @@
elt->fcts->convert_free(elt->object, elt->data, elt->size);
}
- FSEEK (pdump_out, header.stab_offset, SEEK_SET);
+ if (FSEEK (pdump_out, header.stab_offset, SEEK_SET) == -1)
+ {
+ report_file_error ("Unable to fseek dump file",
+ build_ascstring (EMACS_PROGNAME ".dmp"));
+ }
#ifdef NEW_GC
{
diff --git a/src/ChangeLog b/src/ChangeLog
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,7 @@
+2014-12-13 Marcus Crestani <crestani(a)xemacs.org>
+
+ * dumper.c (pdump_register_sub): Don't leave fields uninitialized.
+
2014-12-13 Marcus Crestani <crestani(a)xemacs.org>
* dumper.c (pdump_align_stream):
diff --git a/src/dumper.c b/src/dumper.c
--- a/src/dumper.c
+++ b/src/dumper.c
@@ -850,6 +850,8 @@
{
pdump_cv_ptr_info info;
info.object = *(void **)rdata;
+ info.index = 0;
+ info.save_offset = 0;
info.fcts = desc1->data2.funcs;
if (!pdump_find_in_cv_ptr_dynarr (info.object))
{
@@ -863,6 +865,8 @@
pdump_cv_data_info info;
info.object = data;
info.offset = offset;
+ info.dest_offset = 0;
+ info.save_offset = 0;
info.fcts = desc1->data2.funcs;
info.fcts->convert(rdata, &info.data, &info.size);
I'll push these changes in three days if nobody objects.
--
Marcus
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches