]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Fix ld uninitialized read of script ASSERT data structure
authorAlan Modra <amodra@gmail.com>
Tue, 7 Mar 2017 01:50:00 +0000 (12:20 +1030)
committerAlan Modra <amodra@gmail.com>
Tue, 7 Mar 2017 02:35:32 +0000 (13:05 +1030)
lang_assignment_statement serves both assignments and asserts.

* ldlang.c (open_input_bfds): Check that lang_assignment_statement
is not an assert before referencing defsym.

ld/ChangeLog
ld/ldlang.c

index fd3e232557d1e258430a66835b8585329cf25c34..f4fda0ca3a95f63ae9f535f0d5c0b88a7578bae1 100644 (file)
@@ -1,3 +1,8 @@
+2017-03-07  Alan Modra  <amodra@gmail.com>
+
+       * ldlang.c (open_input_bfds): Check that lang_assignment_statement
+       is not an assert before referencing defsym.
+
 2017-03-02  Tristan Gingold  <gingold@adacore.com>
 
        * configure: Regenerate.
index dafc3489fd8f71911d09069fc44de7298a50b121..54f160c4db424e1a699012526225ca8bc486f7b3 100644 (file)
@@ -3377,7 +3377,8 @@ open_input_bfds (lang_statement_union_type *s, enum open_bfd_mode mode)
 #endif
          break;
        case lang_assignment_statement_enum:
-         if (s->assignment_statement.exp->assign.defsym)
+         if (s->assignment_statement.exp->type.node_class != etree_assert
+             && s->assignment_statement.exp->assign.defsym)
            /* This is from a --defsym on the command line.  */
            exp_fold_tree_no_dot (s->assignment_statement.exp);
          break;