]> git.ipfire.org Git - thirdparty/gcc.git/commit - gcc/analyzer/sm-malloc.cc
analyzer: fix missing leak after call to strsep [PR100615]
authorDavid Malcolm <dmalcolm@redhat.com>
Tue, 18 May 2021 16:29:58 +0000 (12:29 -0400)
committerDavid Malcolm <dmalcolm@redhat.com>
Tue, 18 May 2021 16:29:58 +0000 (12:29 -0400)
commitcd323d97d0592135ca4345701ef051659d8d4507
treebeceb65d66cbe4f39fbd7c287ed5de89a8bbea8c
parent46ca31d65092e5afcef292f807fcf14c5363280d
analyzer: fix missing leak after call to strsep [PR100615]

PR analyzer/100615 reports a missing leak diagnostic.
The issue is that the code calls strsep which the analyzer doesn't
have special knowledge of, and so conservatively assumes that it
could free the pointer, so drops malloc state for it.

Properly "teaching" the analyzer about strsep would require it
to support bifurcating state at a call, which is currently fiddly to
do, so for now this patch notes that strsep doesn't affect the
malloc state machine, allowing the analyzer to correctly detect the leak.

gcc/analyzer/ChangeLog:
PR analyzer/100615
* sm-malloc.cc: Include "analyzer/function-set.h".
(malloc_state_machine::on_stmt): Call unaffected_by_call_p and
bail on the functions it recognizes.
(malloc_state_machine::unaffected_by_call_p): New.

gcc/testsuite/ChangeLog:
PR analyzer/100615
* gcc.dg/analyzer/pr100615.c: New test.
gcc/analyzer/sm-malloc.cc
gcc/testsuite/gcc.dg/analyzer/pr100615.c [new file with mode: 0644]