]> git.eshelyaron.com Git - emacs.git/commitdiff
* xsmfns.c (smc_save_yourself_CB): Check for size calc overflow.
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 29 Jul 2011 05:09:32 +0000 (22:09 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Fri, 29 Jul 2011 05:09:32 +0000 (22:09 -0700)
src/ChangeLog
src/xsmfns.c

index f8e5ca78b33ed395c0f4af2b6fedd96d3e9a6b83..1f288a48f2fa660c1941c9794c7a9aeb8c6af6e3 100644 (file)
@@ -1,5 +1,7 @@
 2011-07-29  Paul Eggert  <eggert@cs.ucla.edu>
 
+       * xsmfns.c (smc_save_yourself_CB): Check for size calc overflow.
+
        * xselect.c: Integer and memory overflow issues.
        (X_LONG_SIZE, X_USHRT_MAX, X_ULONG_MAX): New macros.
        Use them to make the following changes clearer.
index cb56ae648d16dea9a8bec23e8dc284d62ab9801a..217087dbae739b84a1078e35477f519b2d520149 100644 (file)
@@ -223,6 +223,9 @@ smc_save_yourself_CB (SmcConn smcConn,
   props[props_idx]->name = xstrdup (SmRestartCommand);
   props[props_idx]->type = xstrdup (SmLISTofARRAY8);
   /* /path/to/emacs, --smid=xxx --no-splash --chdir=dir ... */
+  if (min (INT_MAX, min (PTRDIFF_MAX, SIZE_MAX) / sizeof *vp) - 3
+      < initial_argc)
+    memory_full (SIZE_MAX);
   i = 3 + initial_argc;
   props[props_idx]->num_vals = i;
   vp = (SmPropValue *) xmalloc (i * sizeof(*vp));