]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix failed assertion when load-force-doc-strings
authorPaul Eggert <eggert@cs.ucla.edu>
Tue, 22 May 2018 19:26:22 +0000 (12:26 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Tue, 22 May 2018 19:42:16 +0000 (12:42 -0700)
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
test/src/lread-tests.el

index b8db117c79c1d67becb81a9993e27bbbfd345647..239c66ccb85d3f885a8b90755b7a5db4aafddb39 100644 (file)
@@ -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++)
     {
index 647e886d3429a5612be4157a50cc3cb4705613dd..639a6da93aea3b39a05a161974f4a7f20a57ee0d 100644 (file)
@@ -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