From patchwork Mon Jul 25 06:45:01 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Martin_Li=C5=A1ka?= X-Patchwork-Id: 151 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:6a10:b5d6:b0:2b9:3548:2db5 with SMTP id v22csp1481945pxt; Sun, 24 Jul 2022 23:45:41 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vHfU3qpY65/Nx4mSyeTRSK6FY6oUAzzQNV3SFfhgUb3MUODpCK5Mugjb4alT1eTaPj/j2/ X-Received: by 2002:a17:907:a063:b0:72b:52f7:feea with SMTP id ia3-20020a170907a06300b0072b52f7feeamr9015133ejc.740.1658731541099; Sun, 24 Jul 2022 23:45:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1658731541; cv=none; d=google.com; s=arc-20160816; b=Z4OBVA4aCzn1ww3ZBzhA6eIjyVCY53tp5OF7MB8h+RqlVG6LgnuEGHsL6DI6Nyjycp gRM3tpOicEv7ZLcNuI3n98wXvL1hKiURB+C6mJEFbalK/DQZUDUrBf/Fm1nV8lypOCai w+3En1LXS7apftghMAPJ8gZa8DMmF0NPSWbOYTgFhXaMm0uAdkMCXgmH5VzAd48aK++c hMbRt4ugwhEOIWMrU26Jwps5EdgoxAgAhpkbljglFxLCDwdGthBuFFy5AffHBf5+NgJ9 3dcBIwImbL91zg/fgX6NGIr0F3iEe5D6uPTa56gg9mXBxKYqP8YTyYkToufMvKTNU7gK tHrQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :content-language:to:subject:from:user-agent:mime-version:date :message-id:dkim-signature:dkim-signature:dmarc-filter:delivered-to; bh=6Bhi4vmA81zHiOtdS5p7C56DCVIv7WbVbLDD++B78l4=; b=MYBXP8A6O0dAxqvCwjAMeaPjKceSfOXNg4LsI/FB2ouLLwMyZxjZTEVYaBOoTX51rn cIrXZHO9cOQkEs0FveSJNW6OHVsy0diRWI1ZiYzphR7RzgZ6+UmeVlkXgelYDVFcnN3E 2spX3cTWgRSrXr6f4RUy6nuXuRaTBP8Ko2quMgBEZzITcMsUehKEtUWB3xLJkDZXtNKw rpzWUi2ylB4X1zf5v/mopR+zEtoIiHvsGZMcmABJ9DGqE5UgDpglVWOfJ1xG6W2KJvsB /Dwvl0QcXaiIzNjMAwq6RCyvk0x8AB7OTvYRbmV8M2R4NVCDBM98TLNV4y1JsxOnrSEi 7RAg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@suse.cz header.s=susede2_rsa header.b=Hq+9wRzK; dkim=neutral (no key) header.i=@suse.cz header.b=u2pfHjiQ; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id hs30-20020a1709073e9e00b00718bf486a1csi9798617ejc.782.2022.07.24.23.45.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 24 Jul 2022 23:45:41 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=fail header.i=@suse.cz header.s=susede2_rsa header.b=Hq+9wRzK; dkim=neutral (no key) header.i=@suse.cz header.b=u2pfHjiQ; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 8351E383EC5B for ; Mon, 25 Jul 2022 06:45:31 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by sourceware.org (Postfix) with ESMTPS id 6914E3841450 for ; Mon, 25 Jul 2022 06:45:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 6914E3841450 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=suse.cz Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.cz Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 299FD33EA6; Mon, 25 Jul 2022 06:45:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1658731503; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=6Bhi4vmA81zHiOtdS5p7C56DCVIv7WbVbLDD++B78l4=; b=Hq+9wRzK14Qwde/ckARxyJ7QGrIcK4BHtKTF3po/hyiQhut8c/oNcDD2L+zoB8vT8LDjtm EmCNdKP54TfzC0mJ1QmVOAbBJz0pTp/vyixNHDPRYdeV1jFyGgMAcSWKGKzYqStZ227pK1 G/GYl5AoDR25uhsIdMPK3ZtYsBaNFmA= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1658731503; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=6Bhi4vmA81zHiOtdS5p7C56DCVIv7WbVbLDD++B78l4=; b=u2pfHjiQNwPLLokmuHysnSkE45a+L39J10Lq8UHVtdp1C0mTZi3D4gI6+ns4d1IrpnXgXj ooVFq8R8t5JwQ3Cg== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 0C1C913AD7; Mon, 25 Jul 2022 06:45:02 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id 4MlFNu473mISRAAAMHmgww (envelope-from ); Mon, 25 Jul 2022 06:45:02 +0000 Message-ID: <3bbb9882-a8c9-98f1-3d4e-1efe0b688b1e@suse.cz> Date: Mon, 25 Jul 2022 08:45:01 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 From: =?utf-8?q?Martin_Li=C5=A1ka?= Subject: [PATCH] analyzer: convert tests with dos2unix To: gcc-patches@gcc.gnu.org Content-Language: en-US X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mirimmad@outlook.com Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-LABELS: =?utf-8?b?IlxcSW1wb3J0YW50Ig==?= X-GMAIL-THRID: =?utf-8?q?1739306084726041519?= X-GMAIL-MSGID: =?utf-8?q?1739306084726041519?= Ready for master? Thanks, Martin gcc/testsuite/ChangeLog: * gcc.dg/analyzer/fd-2.c: Convert Windows endlines to Unix style. * gcc.dg/analyzer/fd-3.c: Likewise. * gcc.dg/analyzer/fd-4.c: Likewise. * gcc.dg/analyzer/fd-5.c: Likewise. * c-c++-common/attr-fd.c: Likewise. --- gcc/testsuite/c-c++-common/attr-fd.c | 36 +++--- gcc/testsuite/gcc.dg/analyzer/fd-2.c | 96 +++++++-------- gcc/testsuite/gcc.dg/analyzer/fd-3.c | 168 +++++++++++++-------------- gcc/testsuite/gcc.dg/analyzer/fd-4.c | 142 +++++++++++----------- gcc/testsuite/gcc.dg/analyzer/fd-5.c | 104 ++++++++--------- 5 files changed, 273 insertions(+), 273 deletions(-) diff --git a/gcc/testsuite/c-c++-common/attr-fd.c b/gcc/testsuite/c-c++-common/attr-fd.c index e4bb4ed0374..9f12093c04f 100644 --- a/gcc/testsuite/c-c++-common/attr-fd.c +++ b/gcc/testsuite/c-c++-common/attr-fd.c @@ -1,18 +1,18 @@ - -int not_a_fn __attribute__ ((fd_arg(1))); /* { dg-warning "'fd_arg' attribute only applies to function types" } */ - -void f (char *p) __attribute__ ((fd_arg(1))); /* { dg-warning "'fd_arg' attribute argument value '1' refers to parameter type 'char ?\\\*'" } */ - - -int not_a_fn_b __attribute__ ((fd_arg_read(1))); /* { dg-warning "'fd_arg_read' attribute only applies to function types" } */ - -void g (char *p) __attribute__ ((fd_arg_read(1))); /* { dg-warning "'fd_arg_read' attribute argument value '1' refers to parameter type 'char ?\\\*'" } */ - - -int not_a_fn_c __attribute__ ((fd_arg_write(1))); /* { dg-warning "'fd_arg_write' attribute only applies to function types" } */ - -void f (char *p) __attribute__ ((fd_arg_write(1))); /* { dg-warning "'fd_arg_write' attribute argument value '1' refers to parameter type 'char ?\\\*'" } */ - - -void fn_a (int fd) __attribute__ ((fd_arg(0))); /* { dg-warning "'fd_arg' attribute argument value '0' does not refer to a function parameter" } */ -void fd_a_1 (int fd) __attribute__ ((fd_arg("notint"))); /* { dg-warning "'fd_arg' attribute argument has type ('char\\\[7\\\]'|'const char\\\*')" } */ + +int not_a_fn __attribute__ ((fd_arg(1))); /* { dg-warning "'fd_arg' attribute only applies to function types" } */ + +void f (char *p) __attribute__ ((fd_arg(1))); /* { dg-warning "'fd_arg' attribute argument value '1' refers to parameter type 'char ?\\\*'" } */ + + +int not_a_fn_b __attribute__ ((fd_arg_read(1))); /* { dg-warning "'fd_arg_read' attribute only applies to function types" } */ + +void g (char *p) __attribute__ ((fd_arg_read(1))); /* { dg-warning "'fd_arg_read' attribute argument value '1' refers to parameter type 'char ?\\\*'" } */ + + +int not_a_fn_c __attribute__ ((fd_arg_write(1))); /* { dg-warning "'fd_arg_write' attribute only applies to function types" } */ + +void f (char *p) __attribute__ ((fd_arg_write(1))); /* { dg-warning "'fd_arg_write' attribute argument value '1' refers to parameter type 'char ?\\\*'" } */ + + +void fn_a (int fd) __attribute__ ((fd_arg(0))); /* { dg-warning "'fd_arg' attribute argument value '0' does not refer to a function parameter" } */ +void fd_a_1 (int fd) __attribute__ ((fd_arg("notint"))); /* { dg-warning "'fd_arg' attribute argument has type ('char\\\[7\\\]'|'const char\\\*')" } */ diff --git a/gcc/testsuite/gcc.dg/analyzer/fd-2.c b/gcc/testsuite/gcc.dg/analyzer/fd-2.c index 96ccf2f7ba8..d794b460a2e 100644 --- a/gcc/testsuite/gcc.dg/analyzer/fd-2.c +++ b/gcc/testsuite/gcc.dg/analyzer/fd-2.c @@ -1,49 +1,49 @@ -int open(const char *, int mode); -void close(int fd); -#define O_RDONLY 0 -#define O_WRONLY 1 -#define O_RDWR 2 -#define STDIN 0 - -void -test_1 (const char *path) -{ - int fd = open (path, O_RDWR); /* { dg-message "\\(1\\) opened here" } */ - close (fd); /* { dg-message "\\(2\\) first 'close' here" "event1" } */ - close (fd); /* { dg-warning "double 'close' of file descriptor 'fd' \\\[CWE-1341\\\]" "warning" } */ - /* { dg-message "\\(3\\) second 'close' here; first 'close' was at \\(2\\)" "event2" { target *-*-* } .-1 } */ -} - -void -test_2 (const char *path) -{ - int fd = open (path, O_RDWR); /* { dg-message "\\(1\\) opened here" } */ - if (fd < 0) /* { dg-message "\\(2\\) assuming 'fd' is a valid file descriptor \\(>= 0\\)" "event1" } */ - /* { dg-message "\\(3\\) following 'false' branch \\(when 'fd >= 0'\\)..." "event2" { target *-*-* } .-1 } */ - return; - close (fd); /* { dg-message "\\(4\\) ...to here" "event1" } */ - /* { dg-message "\\(5\\) first 'close' here" "event2" { target *-*-* } .-1 } */ - close (fd); /* { dg-warning "double 'close' of file descriptor 'fd' \\\[CWE-1341\\\]" "warning" } */ - /* {dg-message "\\(6\\) second 'close' here; first was at \\(5\\)" "" { target *-*-* } .-1 } */ -} - -void -test_3 () -{ - /* FD 0 is stdin at the entry to "main" and thus read-only, but we have no - guarantees here that it hasn't been closed and then reopened for - writing, so we can't issue a warning */ - - int fd = STDIN; - close(fd); /* { dg-message "\\(1\\) first 'close' here" } */ - close(fd); /* { dg-warning "double 'close' of file descriptor 'fd' \\\[CWE-1341\\\]" "warning" } */ - /* { dg-message "\\(2\\) second 'close' here; first 'close' was at \\(1\\)" "event2" { target *-*-* } .-1 } */ -} - -void -test_4 () -{ - int fd = -1; - close(fd); - close(fd); +int open(const char *, int mode); +void close(int fd); +#define O_RDONLY 0 +#define O_WRONLY 1 +#define O_RDWR 2 +#define STDIN 0 + +void +test_1 (const char *path) +{ + int fd = open (path, O_RDWR); /* { dg-message "\\(1\\) opened here" } */ + close (fd); /* { dg-message "\\(2\\) first 'close' here" "event1" } */ + close (fd); /* { dg-warning "double 'close' of file descriptor 'fd' \\\[CWE-1341\\\]" "warning" } */ + /* { dg-message "\\(3\\) second 'close' here; first 'close' was at \\(2\\)" "event2" { target *-*-* } .-1 } */ +} + +void +test_2 (const char *path) +{ + int fd = open (path, O_RDWR); /* { dg-message "\\(1\\) opened here" } */ + if (fd < 0) /* { dg-message "\\(2\\) assuming 'fd' is a valid file descriptor \\(>= 0\\)" "event1" } */ + /* { dg-message "\\(3\\) following 'false' branch \\(when 'fd >= 0'\\)..." "event2" { target *-*-* } .-1 } */ + return; + close (fd); /* { dg-message "\\(4\\) ...to here" "event1" } */ + /* { dg-message "\\(5\\) first 'close' here" "event2" { target *-*-* } .-1 } */ + close (fd); /* { dg-warning "double 'close' of file descriptor 'fd' \\\[CWE-1341\\\]" "warning" } */ + /* {dg-message "\\(6\\) second 'close' here; first was at \\(5\\)" "" { target *-*-* } .-1 } */ +} + +void +test_3 () +{ + /* FD 0 is stdin at the entry to "main" and thus read-only, but we have no + guarantees here that it hasn't been closed and then reopened for + writing, so we can't issue a warning */ + + int fd = STDIN; + close(fd); /* { dg-message "\\(1\\) first 'close' here" } */ + close(fd); /* { dg-warning "double 'close' of file descriptor 'fd' \\\[CWE-1341\\\]" "warning" } */ + /* { dg-message "\\(2\\) second 'close' here; first 'close' was at \\(1\\)" "event2" { target *-*-* } .-1 } */ +} + +void +test_4 () +{ + int fd = -1; + close(fd); + close(fd); } \ No newline at end of file diff --git a/gcc/testsuite/gcc.dg/analyzer/fd-3.c b/gcc/testsuite/gcc.dg/analyzer/fd-3.c index 40fc8af27b5..55e84e3634a 100644 --- a/gcc/testsuite/gcc.dg/analyzer/fd-3.c +++ b/gcc/testsuite/gcc.dg/analyzer/fd-3.c @@ -1,85 +1,85 @@ -int open(const char *, int mode); -void close(int fd); -int write (int fd, void *buf, int nbytes); -int read (int fd, void *buf, int nbytes); -int some_condition(); - -#define O_RDONLY 0 -#define O_WRONLY 1 -#define O_RDWR 2 -#define STDIN 0 -#define O_NOATIME 262144 - -void -test_1 (const char *path, void *buf) -{ - int fd = open (path, O_RDWR); /* { dg-message "\\(1\\) opened here" } */ - write (fd, buf, 1); /* { dg-message "\\(2\\) 'fd' could be invalid: unchecked value from \\(1\\)" } */ - /* { dg-warning "'write' on possibly invalid file descriptor 'fd'" "warning" { target *-*-* } .-1 } */ - close(fd); -} - -void -test_2 (const char *path, void *buf) -{ - int fd = open (path, O_RDWR); /* { dg-message "\\(1\\) opened here" } */ - read (fd, buf, 1); /* { dg-message "\\(2\\) 'fd' could be invalid: unchecked value from \\(1\\)" } */ - /* { dg-warning "'read' on possibly invalid file descriptor 'fd'" "warning" { target *-*-* } .-1 } */ - close (fd); -} - -void -test_3 (void *buf) -{ - int fd = -1; - read (fd, buf, 1); /* { dg-warning "'read' on possibly invalid file descriptor 'fd'" } */ - /* { dg-message "\\(1\\) 'fd' could be invalid" "" { target *-*-* } .-1 } */ -} - -void -test_4 (void *buf) -{ - int fd = STDIN; - read (fd, buf, 1); - close(fd); -} - -void -test_5 (char *path, void *buf) -{ - int flags = O_RDONLY; - if (some_condition()) - flags |= O_NOATIME; - int fd = open (path, flags); - read (fd, buf, 1); /* { dg-warning "'read' on possibly invalid file descriptor 'fd'" } */ - /* { dg-message "\\(1\\) 'fd' could be invalid" "" { target *-*-* } .-1 } */ - close (fd); -} - - -void -test_6 (char *path, void *buf) -{ - int fd = open (path, O_RDONLY); - if (fd != -1) - { - read (fd, buf, 1); - } - close (fd); -} - - -void -test_7 (char *path, void *buf) -{ - int fd = open (path, O_RDWR); /* { dg-message "\\(1\\) opened here" } */ - if (fd != -1) /* { dg-message "\\(2\\) assuming 'fd' is an invalid file descriptor \\(< 0\\)" } */ - { - read (fd, buf, 1); - } else - { - write (fd, buf, 1); /* { dg-warning "'write' on possibly invalid file descriptor 'fd'" } */ - - } - close(fd); +int open(const char *, int mode); +void close(int fd); +int write (int fd, void *buf, int nbytes); +int read (int fd, void *buf, int nbytes); +int some_condition(); + +#define O_RDONLY 0 +#define O_WRONLY 1 +#define O_RDWR 2 +#define STDIN 0 +#define O_NOATIME 262144 + +void +test_1 (const char *path, void *buf) +{ + int fd = open (path, O_RDWR); /* { dg-message "\\(1\\) opened here" } */ + write (fd, buf, 1); /* { dg-message "\\(2\\) 'fd' could be invalid: unchecked value from \\(1\\)" } */ + /* { dg-warning "'write' on possibly invalid file descriptor 'fd'" "warning" { target *-*-* } .-1 } */ + close(fd); +} + +void +test_2 (const char *path, void *buf) +{ + int fd = open (path, O_RDWR); /* { dg-message "\\(1\\) opened here" } */ + read (fd, buf, 1); /* { dg-message "\\(2\\) 'fd' could be invalid: unchecked value from \\(1\\)" } */ + /* { dg-warning "'read' on possibly invalid file descriptor 'fd'" "warning" { target *-*-* } .-1 } */ + close (fd); +} + +void +test_3 (void *buf) +{ + int fd = -1; + read (fd, buf, 1); /* { dg-warning "'read' on possibly invalid file descriptor 'fd'" } */ + /* { dg-message "\\(1\\) 'fd' could be invalid" "" { target *-*-* } .-1 } */ +} + +void +test_4 (void *buf) +{ + int fd = STDIN; + read (fd, buf, 1); + close(fd); +} + +void +test_5 (char *path, void *buf) +{ + int flags = O_RDONLY; + if (some_condition()) + flags |= O_NOATIME; + int fd = open (path, flags); + read (fd, buf, 1); /* { dg-warning "'read' on possibly invalid file descriptor 'fd'" } */ + /* { dg-message "\\(1\\) 'fd' could be invalid" "" { target *-*-* } .-1 } */ + close (fd); +} + + +void +test_6 (char *path, void *buf) +{ + int fd = open (path, O_RDONLY); + if (fd != -1) + { + read (fd, buf, 1); + } + close (fd); +} + + +void +test_7 (char *path, void *buf) +{ + int fd = open (path, O_RDWR); /* { dg-message "\\(1\\) opened here" } */ + if (fd != -1) /* { dg-message "\\(2\\) assuming 'fd' is an invalid file descriptor \\(< 0\\)" } */ + { + read (fd, buf, 1); + } else + { + write (fd, buf, 1); /* { dg-warning "'write' on possibly invalid file descriptor 'fd'" } */ + + } + close(fd); } \ No newline at end of file diff --git a/gcc/testsuite/gcc.dg/analyzer/fd-4.c b/gcc/testsuite/gcc.dg/analyzer/fd-4.c index 41263468a6c..ecd787caff7 100644 --- a/gcc/testsuite/gcc.dg/analyzer/fd-4.c +++ b/gcc/testsuite/gcc.dg/analyzer/fd-4.c @@ -1,72 +1,72 @@ -#include - -int open(const char *, int mode); -void close(int fd); -int write (int fd, void *buf, int nbytes); -int read (int fd, void *buf, int nbytes); - -#define O_RDONLY 0 -#define O_WRONLY 1 -#define O_RDWR 2 - - -void -test_1 (const char *path, void *buf) -{ - int fd = open (path, O_RDONLY); /* { dg-message "opened here as read-only" } */ - if (fd >= 0) /* { dg-message "assuming 'fd' is a valid file descriptor \\(>= 0\\)" "event1" } */ - /* { dg-message "following 'true' branch \\(when 'fd >= 0'\\)..." "event2" { target *-*-* } .-1 } */ - { - write (fd, buf, 1); /* { dg-warning "'write' on read-only file descriptor 'fd'" "warning" } */ - /* { dg-message "\\(4\\) ...to here" "event1" { target *-*-* } .-1 } */ - /* { dg-message "\\(5\\) 'write' on read-only file descriptor 'fd'" "event2" { target *-*-* } .-2 } */ - close (fd); - } -} - -void -test_2 (const char *path, void *buf) -{ - int fd = open (path, O_WRONLY); /* { dg-message "opened here as write-only" } */ - if (fd >= 0) /* { dg-message "assuming 'fd' is a valid file descriptor \\(>= 0\\)" "event1" } */ - /* { dg-message "following 'true' branch \\(when 'fd >= 0'\\)..." "event2" { target *-*-* } .-1 } */ - { - read (fd, buf, 1); /* { dg-warning "'read' on write-only file descriptor 'fd'" "warning" } */ - /* { dg-message "\\(4\\) ...to here" "event1" { target *-*-* } .-1 } */ - /* { dg-message "\\(5\\) 'read' on write-only file descriptor 'fd'" "event2" { target *-*-* } .-2 } */ - close (fd); - } -} - - -void -test_3 (const char *path, void *buf) -{ - int fd = open (path, O_RDWR); /* { dg-message "\\(1\\) opened here" } */ - if (fd >= 0) - { - close(fd); /* {dg-message "\\(2\\) closed here"} */ - read(fd, buf, 1); /* { dg-warning "'read' on closed file descriptor 'fd'" } */ - /* {dg-message "\\(3\\) 'read' on closed file descriptor 'fd'; 'close' was at \\(2\\)" "" {target *-*-*} .-1 } */ - } -} - -void -test_4 (const char *path, void *buf) -{ - int fd = open (path, O_RDWR); /* { dg-message "\\(1\\) opened here" } */ - if (fd >= 0) - { - close(fd); /* {dg-message "\\(2\\) closed here"} */ - write(fd, buf, 1); /* { dg-warning "'write' on closed file descriptor 'fd'" } */ - /* {dg-message "\\(3\\) 'write' on closed file descriptor 'fd'; 'close' was at \\(2\\)" "" {target *-*-*} .-1 } */ - } -} - -void -test_5 (const char *path) -{ - int fd = open (path, O_RDWR); - close(fd); - printf("%d", fd); /* { dg-bogus "'printf' on a closed file descriptor 'fd'" } */ +#include + +int open(const char *, int mode); +void close(int fd); +int write (int fd, void *buf, int nbytes); +int read (int fd, void *buf, int nbytes); + +#define O_RDONLY 0 +#define O_WRONLY 1 +#define O_RDWR 2 + + +void +test_1 (const char *path, void *buf) +{ + int fd = open (path, O_RDONLY); /* { dg-message "opened here as read-only" } */ + if (fd >= 0) /* { dg-message "assuming 'fd' is a valid file descriptor \\(>= 0\\)" "event1" } */ + /* { dg-message "following 'true' branch \\(when 'fd >= 0'\\)..." "event2" { target *-*-* } .-1 } */ + { + write (fd, buf, 1); /* { dg-warning "'write' on read-only file descriptor 'fd'" "warning" } */ + /* { dg-message "\\(4\\) ...to here" "event1" { target *-*-* } .-1 } */ + /* { dg-message "\\(5\\) 'write' on read-only file descriptor 'fd'" "event2" { target *-*-* } .-2 } */ + close (fd); + } +} + +void +test_2 (const char *path, void *buf) +{ + int fd = open (path, O_WRONLY); /* { dg-message "opened here as write-only" } */ + if (fd >= 0) /* { dg-message "assuming 'fd' is a valid file descriptor \\(>= 0\\)" "event1" } */ + /* { dg-message "following 'true' branch \\(when 'fd >= 0'\\)..." "event2" { target *-*-* } .-1 } */ + { + read (fd, buf, 1); /* { dg-warning "'read' on write-only file descriptor 'fd'" "warning" } */ + /* { dg-message "\\(4\\) ...to here" "event1" { target *-*-* } .-1 } */ + /* { dg-message "\\(5\\) 'read' on write-only file descriptor 'fd'" "event2" { target *-*-* } .-2 } */ + close (fd); + } +} + + +void +test_3 (const char *path, void *buf) +{ + int fd = open (path, O_RDWR); /* { dg-message "\\(1\\) opened here" } */ + if (fd >= 0) + { + close(fd); /* {dg-message "\\(2\\) closed here"} */ + read(fd, buf, 1); /* { dg-warning "'read' on closed file descriptor 'fd'" } */ + /* {dg-message "\\(3\\) 'read' on closed file descriptor 'fd'; 'close' was at \\(2\\)" "" {target *-*-*} .-1 } */ + } +} + +void +test_4 (const char *path, void *buf) +{ + int fd = open (path, O_RDWR); /* { dg-message "\\(1\\) opened here" } */ + if (fd >= 0) + { + close(fd); /* {dg-message "\\(2\\) closed here"} */ + write(fd, buf, 1); /* { dg-warning "'write' on closed file descriptor 'fd'" } */ + /* {dg-message "\\(3\\) 'write' on closed file descriptor 'fd'; 'close' was at \\(2\\)" "" {target *-*-*} .-1 } */ + } +} + +void +test_5 (const char *path) +{ + int fd = open (path, O_RDWR); + close(fd); + printf("%d", fd); /* { dg-bogus "'printf' on a closed file descriptor 'fd'" } */ } \ No newline at end of file diff --git a/gcc/testsuite/gcc.dg/analyzer/fd-5.c b/gcc/testsuite/gcc.dg/analyzer/fd-5.c index 8f29c11b3e8..c18b2adcbe5 100644 --- a/gcc/testsuite/gcc.dg/analyzer/fd-5.c +++ b/gcc/testsuite/gcc.dg/analyzer/fd-5.c @@ -1,53 +1,53 @@ -int open(const char *, int mode); -void close(int fd); -int write (int fd, void *buf, int nbytes); -int read (int fd, void *buf, int nbytes); - -#define O_RDONLY 0 -#define O_WRONLY 1 -#define O_RDWR 2 - -void f (int fd) __attribute__((fd_arg(1))); /* { dg-message "argument 1 of 'f' must be an open file descriptor, due to '__attribute__\\(\\(fd_arg\\(1\\)\\)\\)'" } */ - -void -test_1 (const char *path) -{ - int fd = open (path, O_RDWR); - close(fd); - f(fd); /* { dg-warning "'f' on closed file descriptor 'fd'" } */ - /* { dg-message "\\(3\\) 'f' on closed file descriptor 'fd'; 'close' was at \\(2\\)" "" { target *-*-* } .-1 } */ -} - -void g (int fd) __attribute__((fd_arg_read(1))); /* { dg-message "argument 1 of 'g' must be a readable file descriptor, due to '__attribute__\\(\\(fd_arg_read\\(1\\)\\)\\)'" } */ - -void -test_2 (const char *path) -{ - int fd = open (path, O_WRONLY); - if (fd != -1) - { - g (fd); /* { dg-warning "'g' on write-only file descriptor 'fd'" } */ - } - close (fd); -} - -void h (int fd) __attribute__((fd_arg_write(1))); /* { dg-message "argument 1 of 'h' must be a writable file descriptor, due to '__attribute__\\(\\(fd_arg_write\\(1\\)\\)\\)'" } */ -void -test_3 (const char *path) -{ - int fd = open (path, O_RDONLY); - if (fd != -1) - { - h (fd); /* { dg-warning "'h' on read-only file descriptor 'fd'" } */ - } - close(fd); -} - -void ff (int fd) __attribute__((fd_arg(1))); /* { dg-message "argument 1 of 'ff' must be an open file descriptor, due to '__attribute__\\(\\(fd_arg\\(1\\)\\)\\)'" } */ - -void test_4 (const char *path) -{ - int fd = open (path, O_RDWR); - ff (fd); /* { dg-warning "'ff' on possibly invalid file descriptor 'fd'" } */ - close(fd); +int open(const char *, int mode); +void close(int fd); +int write (int fd, void *buf, int nbytes); +int read (int fd, void *buf, int nbytes); + +#define O_RDONLY 0 +#define O_WRONLY 1 +#define O_RDWR 2 + +void f (int fd) __attribute__((fd_arg(1))); /* { dg-message "argument 1 of 'f' must be an open file descriptor, due to '__attribute__\\(\\(fd_arg\\(1\\)\\)\\)'" } */ + +void +test_1 (const char *path) +{ + int fd = open (path, O_RDWR); + close(fd); + f(fd); /* { dg-warning "'f' on closed file descriptor 'fd'" } */ + /* { dg-message "\\(3\\) 'f' on closed file descriptor 'fd'; 'close' was at \\(2\\)" "" { target *-*-* } .-1 } */ +} + +void g (int fd) __attribute__((fd_arg_read(1))); /* { dg-message "argument 1 of 'g' must be a readable file descriptor, due to '__attribute__\\(\\(fd_arg_read\\(1\\)\\)\\)'" } */ + +void +test_2 (const char *path) +{ + int fd = open (path, O_WRONLY); + if (fd != -1) + { + g (fd); /* { dg-warning "'g' on write-only file descriptor 'fd'" } */ + } + close (fd); +} + +void h (int fd) __attribute__((fd_arg_write(1))); /* { dg-message "argument 1 of 'h' must be a writable file descriptor, due to '__attribute__\\(\\(fd_arg_write\\(1\\)\\)\\)'" } */ +void +test_3 (const char *path) +{ + int fd = open (path, O_RDONLY); + if (fd != -1) + { + h (fd); /* { dg-warning "'h' on read-only file descriptor 'fd'" } */ + } + close(fd); +} + +void ff (int fd) __attribute__((fd_arg(1))); /* { dg-message "argument 1 of 'ff' must be an open file descriptor, due to '__attribute__\\(\\(fd_arg\\(1\\)\\)\\)'" } */ + +void test_4 (const char *path) +{ + int fd = open (path, O_RDWR); + ff (fd); /* { dg-warning "'ff' on possibly invalid file descriptor 'fd'" } */ + close(fd); } \ No newline at end of file