summaryrefslogtreecommitdiff
path: root/src/callproc.c
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2011-07-28 13:29:09 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2011-07-28 13:29:09 -0700
commit860887db5c3c55a502795d89d43176783e0e313d (patch)
tree283d1e4358af587a1360319a9c6a962f7098f896 /src/callproc.c
parent6e1fc4528b8dcb84ba7d173f6c350cfba5385634 (diff)
downloademacs-860887db5c3c55a502795d89d43176783e0e313d.tar.gz
emacs-860887db5c3c55a502795d89d43176783e0e313d.tar.bz2
emacs-860887db5c3c55a502795d89d43176783e0e313d.zip
* callproc.c (child_setup): Don't assume strlen fits in int.
Diffstat (limited to 'src/callproc.c')
-rw-r--r--src/callproc.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/callproc.c b/src/callproc.c
index ad3eddbdd39..13d1232a346 100644
--- a/src/callproc.c
+++ b/src/callproc.c
@@ -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