diff options
author | Alan Modra <amodra@gmail.com> | 2022-06-06 14:27:17 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2022-06-08 16:22:15 +0930 |
commit | 38ef9f36cf2c31bef5d3c0f122cadd5b8c291c0e (patch) | |
tree | a768fdb60f6018254b11aa4bc68738233edda633 | |
parent | bcdbf606bc054bd1fa9a1c8978f2d3a57e42adf4 (diff) | |
download | gdb-38ef9f36cf2c31bef5d3c0f122cadd5b8c291c0e.zip gdb-38ef9f36cf2c31bef5d3c0f122cadd5b8c291c0e.tar.gz gdb-38ef9f36cf2c31bef5d3c0f122cadd5b8c291c0e.tar.bz2 |
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.
-rw-r--r-- | gas/input-scrub.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/gas/input-scrub.c b/gas/input-scrub.c index f65cd79..ec0b007 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; |