emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master 02f303d: Fix failed assertion when load-force-doc-s


From: Paul Eggert
Subject: [Emacs-diffs] master 02f303d: Fix failed assertion when load-force-doc-strings
Date: Tue, 22 May 2018 15:42:21 -0400 (EDT)

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

    Fix failed assertion when load-force-doc-strings
    
    Problem reported by Philipp Stephani (Bug#31556).
    * src/lread.c (read_vector): When load_force_doc_strings, check
    for byte code vectors that are invalid because they are too short.
    * test/src/lread-tests.el (lread-invalid-bytecodes): New test.
---
 src/lread.c             | 4 +++-
 test/src/lread-tests.el | 4 ++++
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/lread.c b/src/lread.c
index b8db117..239c66c 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -3829,9 +3829,11 @@ read_vector (Lisp_Object readcharfun, bool bytecodeflag)
 
   tem = read_list (1, readcharfun);
   len = Flength (tem);
+  if (bytecodeflag && XFASTINT (len) <= COMPILED_STACK_DEPTH)
+    error ("Invalid byte code");
   vector = Fmake_vector (len, Qnil);
 
-  size = ASIZE (vector);
+  size = XFASTINT (len);
   ptr = XVECTOR (vector)->contents;
   for (i = 0; i < size; i++)
     {
diff --git a/test/src/lread-tests.el b/test/src/lread-tests.el
index 647e886..639a6da 100644
--- a/test/src/lread-tests.el
+++ b/test/src/lread-tests.el
@@ -207,4 +207,8 @@ literals (Bug#20852)."
      ;; bug was fixed.
      (eval-buffer))))
 
+(ert-deftest lread-invalid-bytecodes ()
+  (should-error
+   (let ((load-force-doc-strings t)) (read "#[0 \"\"]"))))
+
 ;;; lread-tests.el ends here



reply via email to

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