aboutsummaryrefslogtreecommitdiffstats
path: root/src/process.c
diff options
context:
space:
mode:
authorPaul Eggert2011-10-13 00:00:35 -0700
committerPaul Eggert2011-10-13 00:00:35 -0700
commitd83cf4ccb94a5d4ea15980d76f7b16ee19909200 (patch)
tree89b250df6ff7ec8feea1601155f583cd7d2c0e3d /src/process.c
parent3f4eabd19215fe1271594ac3ec81d543d2714f20 (diff)
downloademacs-d83cf4ccb94a5d4ea15980d76f7b16ee19909200.tar.gz
emacs-d83cf4ccb94a5d4ea15980d76f7b16ee19909200.zip
* process.c (Fsignal_process): Check for process-ids out of pid_t range rather than relying on undefined behavior.
Diffstat (limited to 'src/process.c')
-rw-r--r--src/process.c18
1 files changed, 2 insertions, 16 deletions
diff --git a/src/process.c b/src/process.c
index ea433d2c373..8270a57c177 100644
--- a/src/process.c
+++ b/src/process.c
@@ -5976,22 +5976,8 @@ SIGCODE may be an integer, or a symbol whose name is a signal name. */)
5976 if (NILP (process)) 5976 if (NILP (process))
5977 return process; 5977 return process;
5978 5978
5979 if (INTEGERP (process)) 5979 if (NUMBERP (process))
5980 { 5980 CONS_TO_INTEGER (process, pid_t, pid);
5981 EMACS_INT v = XINT (process);
5982 if (! (TYPE_MINIMUM (pid_t) <= v && v <= TYPE_MAXIMUM (pid_t)))
5983 return make_number (-1);
5984 pid = v;
5985 }
5986 else if (FLOATP (process))
5987 {
5988 double v = XFLOAT_DATA (process);
5989 if (! (TYPE_MINIMUM (pid_t) <= v && v < TYPE_MAXIMUM (pid_t) + 1.0))
5990 return make_number (-1);
5991 pid = v;
5992 if (pid != v)
5993 return make_number (-1);
5994 }
5995 else 5981 else
5996 { 5982 {
5997 CHECK_PROCESS (process); 5983 CHECK_PROCESS (process);