]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gas: Fix a CFI label name memory leak in scfi.c
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 9 Apr 2024 23:04:16 +0000 (16:04 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Thu, 11 Apr 2024 11:11:19 +0000 (04:11 -0700)
CFI label name can be freed only after use.

* scfi.c (handle_scfi_dot_cfi): Free CFI label name after use.
* scfidw2gen.c (scfi_process_cfi_label): Add a comment.  Remove
TODO on freeing CFI label name.

gas/scfi.c
gas/scfidw2gen.c

index 929ea8a73e119f2abc11c844d0b3d65890db17ba..b29e922ecb3b08a2974144a5cb873d137a2345a3 100644 (file)
@@ -1141,6 +1141,7 @@ handle_scfi_dot_cfi (ginsnS *ginsn)
          break;
        case CFI_label:
          scfi_dot_cfi (CFI_label, 0, 0, 0, op->op_data->name, ginsn->sym);
+         free ((char *) op->op_data->name);
          break;
        case CFI_signal_frame:
          scfi_dot_cfi (CFI_signal_frame, 0, 0, 0, NULL, ginsn->sym);
index ebf2d24dab218df319044548ef07ff4d30232a98..2b018fac8bdf5e58e8330ba981d153a5038b4a06 100644 (file)
@@ -57,8 +57,8 @@ scfi_process_cfi_label (void)
   frch_ginsn_data_append (ginsn);
 
   scfi_op_add_cfi_label (ginsn, name);
-  /* TODO.  */
-  // free (name);
+  /* NB: Can't free NAME here since it will be used later.  Free it in
+     handle_scfi_dot_cfi after it is unused.  */
 
   demand_empty_rest_of_line ();
 }