summaryrefslogtreecommitdiff
path: root/gas/input-scrub.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2022-06-06 14:27:17 +0930
committerAlan Modra <amodra@gmail.com>2022-06-08 16:22:15 +0930
commit38ef9f36cf2c31bef5d3c0f122cadd5b8c291c0e (patch)
treea768fdb60f6018254b11aa4bc68738233edda633 /gas/input-scrub.c
parentbcdbf606bc054bd1fa9a1c8978f2d3a57e42adf4 (diff)
downloadbinutils-gdb-38ef9f36cf2c31bef5d3c0f122cadd5b8c291c0e.tar.gz
asan: double free sb_kill
oss-fuzz hits a flaky crash with a double-free. I think this is due to gas static state not being reinitialised between testcases, a bug with oss-fuzz not gas. Anyway, this patch should avoid the problem. * input-scrub.c (input_scrub_push): Move init of sb_index.. (input_scrub_reinit): ..to here.
Diffstat (limited to 'gas/input-scrub.c')
-rw-r--r--gas/input-scrub.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/gas/input-scrub.c b/gas/input-scrub.c
index f65cd7957b1..ec0b007c77a 100644
--- a/gas/input-scrub.c
+++ b/gas/input-scrub.c
@@ -139,6 +139,7 @@ input_scrub_reinit (void)
input_file_begin (); /* Reinitialize! */
logical_input_line = -1u;
logical_input_file = NULL;
+ sb_index = -1;
buffer_length = input_file_buffer_size () * 2;
buffer_start = XNEWVEC (char, BEFORE_SIZE + AFTER_SIZE + 1 + buffer_length);
@@ -172,8 +173,6 @@ input_scrub_push (char *saved_position)
saved->next_saved_file = next_saved_file;
saved->input_file_save = input_file_push ();
- sb_index = -1;
-
input_scrub_reinit ();
return saved;