From: Immad Mir Date: Mon, 15 Aug 2022 16:51:27 +0000 (+0530) Subject: analyzer: fix for ICE in sm-fd.cc [PR106551] X-Git-Tag: basepoints/gcc-14~5156 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ed7e7620188dc0e653815bdd40d8802bd5446638;p=thirdparty%2Fgcc.git analyzer: fix for ICE in sm-fd.cc [PR106551] 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 --- 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(); + } +}