aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggert2018-03-09 12:06:05 -0800
committerPaul Eggert2018-03-09 12:08:48 -0800
commitae0634148e0a6242067c98260721be032bca283f (patch)
treeb1ad657888a3b822a5702a2a736bf21938e2492a
parent94a59a6d8377db809b395175f7dbb81e8325dcf2 (diff)
downloademacs-ae0634148e0a6242067c98260721be032bca283f.tar.gz
emacs-ae0634148e0a6242067c98260721be032bca283f.zip
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.
-rw-r--r--src/sysdep.c6
-rw-r--r--src/xfaces.c2
2 files changed, 6 insertions, 2 deletions
diff --git a/src/sysdep.c b/src/sysdep.c
index c59034ce5c3..1eaf648ea78 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -3006,7 +3006,11 @@ list_system_processes (void)
3006 for (tail = proclist; CONSP (tail); tail = next) 3006 for (tail = proclist; CONSP (tail); tail = next)
3007 { 3007 {
3008 next = XCDR (tail); 3008 next = XCDR (tail);
3009 XSETCAR (tail, Fstring_to_number (XCAR (tail), Qnil)); 3009 Lisp_Object pidstring = XCAR (tail);
3010 Lisp_Object pid = Fstring_to_number (pidstring, Qnil);
3011 if (!INTEGERP (pid) || XINT (pid) <= 0)
3012 xsignal1 (Qoverflow_error, pidstring);
3013 XSETCAR (tail, pid);
3010 } 3014 }
3011 3015
3012 /* directory_files_internal returns the files in reverse order; undo 3016 /* directory_files_internal returns the files in reverse order; undo
diff --git a/src/xfaces.c b/src/xfaces.c
index 77afee4587d..56df06574a7 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -3393,7 +3393,7 @@ DEFUN ("internal-set-lisp-face-attribute-from-resource",
3393 else if (EQ (attr, QCheight)) 3393 else if (EQ (attr, QCheight))
3394 { 3394 {
3395 value = Fstring_to_number (value, make_number (10)); 3395 value = Fstring_to_number (value, make_number (10));
3396 if (XINT (value) <= 0) 3396 if (!INTEGERP (value) || XINT (value) <= 0)
3397 signal_error ("Invalid face height from X resource", value); 3397 signal_error ("Invalid face height from X resource", value);
3398 } 3398 }
3399 else if (EQ (attr, QCbold) || EQ (attr, QCitalic)) 3399 else if (EQ (attr, QCbold) || EQ (attr, QCitalic))