mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-20 03:47:34 +00:00
* process.c (Fsignal_process): Check for process-ids out of pid_t range rather than relying on undefined behavior.
This commit is contained in:
parent
3f4eabd192
commit
d83cf4ccb9
2 changed files with 4 additions and 18 deletions
|
|
@ -562,8 +562,8 @@
|
|||
(sigchld_handler):
|
||||
Check that fixnums are in proper range for system types.
|
||||
(Fsignal_process): Simplify by avoiding a goto.
|
||||
Treat out-of-range process numbers just like invalid numbers
|
||||
that fit into the pid_t range, and return -1.
|
||||
Check for process-ids out of pid_t range rather than relying on
|
||||
undefined behavior.
|
||||
(Fformat_network_address, read_process_output, send_process)
|
||||
(Fprocess_send_region, status_notify):
|
||||
Use ptrdiff_t, not EMACS_INT, where ptrdiff_t is wide enough.
|
||||
|
|
|
|||
|
|
@ -5976,22 +5976,8 @@ SIGCODE may be an integer, or a symbol whose name is a signal name. */)
|
|||
if (NILP (process))
|
||||
return process;
|
||||
|
||||
if (INTEGERP (process))
|
||||
{
|
||||
EMACS_INT v = XINT (process);
|
||||
if (! (TYPE_MINIMUM (pid_t) <= v && v <= TYPE_MAXIMUM (pid_t)))
|
||||
return make_number (-1);
|
||||
pid = v;
|
||||
}
|
||||
else if (FLOATP (process))
|
||||
{
|
||||
double v = XFLOAT_DATA (process);
|
||||
if (! (TYPE_MINIMUM (pid_t) <= v && v < TYPE_MAXIMUM (pid_t) + 1.0))
|
||||
return make_number (-1);
|
||||
pid = v;
|
||||
if (pid != v)
|
||||
return make_number (-1);
|
||||
}
|
||||
if (NUMBERP (process))
|
||||
CONS_TO_INTEGER (process, pid_t, pid);
|
||||
else
|
||||
{
|
||||
CHECK_PROCESS (process);
|
||||
|
|
|
|||
Loading…
Reference in a new issue