Message ID | CY4PR1801MB1910D7C6854D6F85226BC689C6689@CY4PR1801MB1910.namprd18.prod.outlook.com |
---|---|
State | New |
Headers | show |
Series | analyzer: fix for ICE in sm-fd.cc [PR106551] | expand |
On Mon, 2022-08-15 at 14:02 +0530, Immad Mir wrote: > This patch fixes the ICE caused by valid_to_unchecked_state > in sm-fd.cc by exiting early if first argument of any "dup" > functions is invalid. > > gcc/analyzer/ChangeLog: > PR analyzer/106551 > * sm-fd.cc (check_for_dup): exit early if first > argument is invalid for all dup functions. > > gcc/testsuite/ChangeLog: > PR analyzer/106551 > * gcc.dg/analyzer/fd-dup-1.c: New testcase. > > Signed-off-by: Immad Mir <mirimmad@outlook.com> Thanks; looks good to me. Dave
diff --git a/gcc/analyzer/sm-fd.cc b/gcc/analyzer/sm-fd.cc index e02b86baad1..505d598f3f0 100644 --- a/gcc/analyzer/sm-fd.cc +++ b/gcc/analyzer/sm-fd.cc @@ -976,8 +976,7 @@ fd_state_machine::check_for_dup (sm_context *sm_ctxt, const supernode *node, { check_for_open_fd (sm_ctxt, node, stmt, call, callee_fndecl, DIRS_READ_WRITE); - if (kind == DUP_1) - return; + return; } switch (kind) { diff --git a/gcc/testsuite/gcc.dg/analyzer/fd-dup-1.c b/gcc/testsuite/gcc.dg/analyzer/fd-dup-1.c index b971d31b1c7..b4f43e7f0ef 100644 --- a/gcc/testsuite/gcc.dg/analyzer/fd-dup-1.c +++ b/gcc/testsuite/gcc.dg/analyzer/fd-dup-1.c @@ -245,4 +245,15 @@ test_22 (int flags) close (fd); } +void do_something(); +void +test_23 () +{ + int nullfd = -1; + int fd = 1; + if (dup2 (nullfd, fd) < 0) /* { dg-warning "'dup2' on possibly invalid file descriptor 'nullfd'" } */ + { + do_something(); + } +}
This patch fixes the ICE caused by valid_to_unchecked_state in sm-fd.cc by exiting early if first argument of any "dup" functions is invalid. gcc/analyzer/ChangeLog: PR analyzer/106551 * sm-fd.cc (check_for_dup): exit early if first argument is invalid for all dup functions. gcc/testsuite/ChangeLog: PR analyzer/106551 * gcc.dg/analyzer/fd-dup-1.c: New testcase. Signed-off-by: Immad Mir <mirimmad@outlook.com> --- gcc/analyzer/sm-fd.cc | 3 +-- gcc/testsuite/gcc.dg/analyzer/fd-dup-1.c | 11 +++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-)