summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lread.c4
-rw-r--r--test/src/lread-tests.el4
2 files changed, 7 insertions, 1 deletions
diff --git a/src/lread.c b/src/lread.c
index b8db117c79c..239c66ccb85 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 647e886d342..639a6da93ae 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