From 0f8628490e3e06f2bfe14451626f55b2165d711c Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 19 Apr 2019 12:55:18 -0700 Subject: [PATCH] Fix Fload dangling pointer MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit * src/lread.c (Fload): Expand decl’s lifetime to match its use. Bug found by gcc -fsanitize=address. --- src/lread.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/lread.c b/src/lread.c index f83db2ac9f9..6cd1029cd9f 100644 --- a/src/lread.c +++ b/src/lread.c @@ -1439,6 +1439,10 @@ Return t if the file exists and loads successfully. */) specbind (Qinhibit_file_name_operation, Qnil); specbind (Qload_in_progress, Qt); + /* Declare here rather than inside the else-part because the storage + might be accessed by the unbind_to call below. */ + struct infile input; + if (is_module) { #ifdef HAVE_MODULES @@ -1453,7 +1457,6 @@ Return t if the file exists and loads successfully. */) } else { - struct infile input; input.stream = stream; input.lookahead = 0; infile = &input; -- 2.39.2