emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master ae06341: Fix string-to-number C-level mishandling


From: Paul Eggert
Subject: [Emacs-diffs] master ae06341: Fix string-to-number C-level mishandling
Date: Fri, 9 Mar 2018 15:08:52 -0500 (EST)

branch: master
commit ae0634148e0a6242067c98260721be032bca283f
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>

    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.
---
 src/sysdep.c | 6 +++++-
 src/xfaces.c | 2 +-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/sysdep.c b/src/sysdep.c
index c59034c..1eaf648 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -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
diff --git a/src/xfaces.c b/src/xfaces.c
index 77afee4..56df065 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -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))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]