>From f47a28e686706290008c9c0e5ee3a2f241d6acae Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Tue, 22 May 2018 12:26:22 -0700 Subject: [PATCH] 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 b8db117c79..239c66ccb8 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 647e886d34..639a6da93a 100644 --- a/test/src/lread-tests.el +++ b/test/src/lread-tests.el @@ -207,4 +207,8 @@ lread-tests--last-message ;; 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 -- 2.17.0