diff options
| author | Paul Eggert | 2018-03-09 12:06:05 -0800 |
|---|---|---|
| committer | Paul Eggert | 2018-03-09 12:08:48 -0800 |
| commit | ae0634148e0a6242067c98260721be032bca283f (patch) | |
| tree | b1ad657888a3b822a5702a2a736bf21938e2492a /src | |
| parent | 94a59a6d8377db809b395175f7dbb81e8325dcf2 (diff) | |
| download | emacs-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.
Diffstat (limited to 'src')
| -rw-r--r-- | src/sysdep.c | 6 | ||||
| -rw-r--r-- | src/xfaces.c | 2 |
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)) |