From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2209) id 3119E3858422; Mon, 13 Mar 2023 18:54:55 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3119E3858422 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1678733695; bh=9SDGgeqtsQiwu1GwkTtzPR4X9H/bkddJgOoqQojT0Ww=; h=From:To:Subject:Date:From; b=BUOmuXbpXlbOq3ViCzuRwFrUdP71FHAsCXMd4aAGOx6aUs4pv5cy/+9QO4JNWBS3X p0kBtLrcZ43nK9/jsI+MCI76ySr8TN1u0N9M703tu8JsRjtOayviGm5rcvaQK4rT5l kay583EfmIQBh4lo+T4PsB2eD5WTdlYmvQSuE61k= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: David Malcolm To: gcc-cvs@gcc.gnu.org Subject: [gcc r13-6641] testsuite: add test coverage for analyzer leak false +ve [PR105906] X-Act-Checkin: gcc X-Git-Author: David Malcolm X-Git-Refname: refs/heads/master X-Git-Oldrev: 129664c67b774511b53bfeee9e80a142ae7cd026 X-Git-Newrev: 23532dac3f602d6c29f5b7062c7fe30905061764 Message-Id: <20230313185455.3119E3858422@sourceware.org> Date: Mon, 13 Mar 2023 18:54:55 +0000 (GMT) List-Id: https://gcc.gnu.org/g:23532dac3f602d6c29f5b7062c7fe30905061764 commit r13-6641-g23532dac3f602d6c29f5b7062c7fe30905061764 Author: David Malcolm Date: Mon Mar 13 14:53:05 2023 -0400 testsuite: add test coverage for analyzer leak false +ve [PR105906] Adding regression test coverage; I believe I fixed this leak false positive with r13-5113-g688fc162b76dc6. gcc/testsuite/ChangeLog: PR analyzer/105906 * gcc.dg/analyzer/leak-pr105906.c: New test. Signed-off-by: David Malcolm Diff: --- gcc/testsuite/gcc.dg/analyzer/leak-pr105906.c | 32 +++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/gcc/testsuite/gcc.dg/analyzer/leak-pr105906.c b/gcc/testsuite/gcc.dg/analyzer/leak-pr105906.c new file mode 100644 index 00000000000..72901e4d1eb --- /dev/null +++ b/gcc/testsuite/gcc.dg/analyzer/leak-pr105906.c @@ -0,0 +1,32 @@ +/* { dg-additional-options "-Wno-analyzer-too-complex" } */ + +#define NULL ((void *)0) + +#define LEN 64 + +char ** +epystr_explode(const char *delim, char *str) +{ + char **out = NULL; + int i; + + if (str == NULL || delim == NULL) + return NULL; + + out = __builtin_malloc(LEN * sizeof(char *)); + if (out == NULL) + return NULL; + + for (i = 0; i < LEN; i++) { + out[i] = __builtin_strdup("bla"); + if (out[i] == NULL) /* { dg-bogus "leak" } */ + goto freem; + } + return out; + +freem: + while (--i >= 0) + __builtin_free(out[i]); + __builtin_free(out); + return NULL; +}