]> git.eshelyaron.com Git - emacs.git/commitdiff
* process.c (Fnetwork_interface_list): Check for overflow
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 29 Jul 2011 01:05:39 +0000 (18:05 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Fri, 29 Jul 2011 01:05:39 +0000 (18:05 -0700)
in size calculation.

src/ChangeLog
src/process.c

index 748ccc333b2e7e5f99910e7e18ae3518e8c70f91..46d2cdb82f7fdfac6962fd0deeaed5931eafc7b8 100644 (file)
@@ -1,5 +1,8 @@
 2011-07-29  Paul Eggert  <eggert@cs.ucla.edu>
 
+       * process.c (Fnetwork_interface_list): Check for overflow
+       in size calculation.
+
        * nsterm.h (struct ns_color_table.size, struct ns_color_table.avail):
        Now ptrdiff_t, not int.
        * nsterm.m (ns_index_color): Use ptrdiff_t, not int, for table indexes.
index 236c27e5c3a08897e9043a3504ed25cb03c6419b..31359a1f1f2a96de0f5a969cf400d5cc7fc60c10 100644 (file)
@@ -3567,6 +3567,12 @@ format; see the description of ADDRESS in `make-network-process'.  */)
     return Qnil;
 
  again:
+  if (min (INT_MAX, min (PTRDIFF_MAX, SIZE_MAX)) / sizeof *ifreqs - 25
+      < ifaces)
+    {
+      xfree (ifreqs);
+      memory_full (SIZE_MAX);
+    }
   ifaces += 25;
   buf_size = ifaces * sizeof (ifreqs[0]);
   ifreqs = (struct ifreq *)xrealloc(ifreqs, buf_size);