]> git.eshelyaron.com Git - emacs.git/commitdiff
* callproc.c (child_setup): Don't assume strlen fits in int.
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 28 Jul 2011 20:29:09 +0000 (13:29 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Thu, 28 Jul 2011 20:29:09 +0000 (13:29 -0700)
src/ChangeLog
src/callproc.c

index ff5dfc09330494d660558780cde2e36af9fb9fc8..9b9a9686259b0cd052dc161b26fb7f65df8e4832 100644 (file)
@@ -1,5 +1,7 @@
 2011-07-28  Paul Eggert  <eggert@cs.ucla.edu>
 
+       * callproc.c (child_setup): Don't assume strlen fits in int.
+
        * buffer.c: Memory overflow fixes.
        (overlays_at, overlays_in, record_overlay_string, overlay_strings):
        Don't update size of array until after memory allocation succeeds,
index ad3eddbdd397b42f73c0ba8fdbcdd6885e90f262..13d1232a34622f211fd260473ba558f24d7cc26d 100644 (file)
@@ -1145,9 +1145,11 @@ child_setup (int in, int out, int err, register char **new_argv, int set_pgrp, L
      cleaned up in the usual way. */
   {
     register char *temp;
-    register int i;
+    register ptrdiff_t i;
 
     i = SBYTES (current_dir);
+    if (min (PTRDIFF_MAX, SIZE_MAX) - 6 < i)
+      memory_full (SIZE_MAX);
 #ifdef MSDOS
     /* MSDOS must have all environment variables malloc'ed, because
        low-level libc functions that launch subsidiary processes rely