https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120985

            Bug ID: 120985
           Summary: Possible memory leak in read_specs at gcc.cc
           Product: gcc
           Version: 16.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: driver
          Assignee: unassigned at gcc dot gnu.org
          Reporter: shuhaofu.g at gmail dot com
  Target Milestone: ---

Affected Commit: 559ddecabef9c23210c84fdb05fceaf9cee81bd9 @ github mirror
Affected Function: read_specs @ gcc.cc

1. `save_string` executes and returns a heap-allocated buffer to `suffix`
Line:
https://github.com/gcc-mirror/gcc/blob/559ddecabef9c23210c84fdb05fceaf9cee81bd9/gcc/gcc.cc#L2559)

2. selects true branch here `suffix[0] == '*'`
Line:
https://github.com/gcc-mirror/gcc/blob/559ddecabef9c23210c84fdb05fceaf9cee81bd9/gcc/gcc.cc#L2592

After the above branch, `suffix` is neither saved into a global variable nor
freed manually. Given that such a leak lies in a while loop, it seems worth
fixing. 

If confirmed, it may also be easily fixed by inserting `free(suffix)` before
https://github.com/gcc-mirror/gcc/blob/559ddecabef9c23210c84fdb05fceaf9cee81bd9/gcc/gcc.cc#L2616,
without hurting the readability.

Reply via email to