Fix string-to-number C-level mishandling

* src/sysdep.c (list_system_processes):
* src/xfaces.c (Finternal_set_lisp_face_attribute_from_resource):
Defend against Fstring_to_number returning a float or a nonsense
integer.
This commit is contained in:
Paul Eggert 2018-03-09 12:06:05 -08:00
parent 94a59a6d83
commit ae0634148e
2 changed files with 6 additions and 2 deletions

View file

@ -3006,7 +3006,11 @@ list_system_processes (void)
for (tail = proclist; CONSP (tail); tail = next)
{
next = XCDR (tail);
XSETCAR (tail, Fstring_to_number (XCAR (tail), Qnil));
Lisp_Object pidstring = XCAR (tail);
Lisp_Object pid = Fstring_to_number (pidstring, Qnil);
if (!INTEGERP (pid) || XINT (pid) <= 0)
xsignal1 (Qoverflow_error, pidstring);
XSETCAR (tail, pid);
}
/* directory_files_internal returns the files in reverse order; undo

View file

@ -3393,7 +3393,7 @@ DEFUN ("internal-set-lisp-face-attribute-from-resource",
else if (EQ (attr, QCheight))
{
value = Fstring_to_number (value, make_number (10));
if (XINT (value) <= 0)
if (!INTEGERP (value) || XINT (value) <= 0)
signal_error ("Invalid face height from X resource", value);
}
else if (EQ (attr, QCbold) || EQ (attr, QCitalic))