From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from relay11.mail.gandi.net (relay11.mail.gandi.net [IPv6:2001:4b98:dc4:8::231]) by sourceware.org (Postfix) with ESMTPS id 64E2E3858414 for ; Mon, 14 Feb 2022 12:59:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 64E2E3858414 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=starynkevitch.net Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=starynkevitch.net Received: (Authenticated sender: basile@starynkevitch.net) by mail.gandi.net (Postfix) with ESMTPSA id 88D71100012; Mon, 14 Feb 2022 12:59:55 +0000 (UTC) Message-ID: <8e40d86b-8d93-cf29-e53e-a634b1fe2129@starynkevitch.net> Date: Mon, 14 Feb 2022 13:59:54 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Subject: GSoC: Working on the static analyzer Content-Language: en-US To: gcc@gcc.gnu.org, mirimnan017@gmail.com References: From: Basile Starynkevitch In-Reply-To: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00, HTML_MESSAGE, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gcc@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Feb 2022 13:00:00 -0000 Hello, Mir Immad asked: > Should the analyzer warn for code like this "when open fails" (like strchr > does when 'strchr' returns NULL) > > int fd = open("NOFILE", O_RDONLY); > write(fd, "a", 1); > > because of the bad file descriptor. > unless it is written like this: > if (!errno) > write(fd, "a", 1); My opinion is yes, in most cases. BTW, the write should fail for a read-only file descriptor. A case (on Linux) where a check is probably not needed: isint fd=open("/proc/self/exe", O_RDONLY); or int fd=open ("/dev/random", O_RDONLY); done *near the beginning* of main. There are only pathological cases where they won't succeed. I suspect that except for very critical executable, testing such failures is practically useless. And your analyzer might start from https://github.com/bstarynk/bismon/ or use https://frama-c.com/ PS. My pet project is http://refpersys.org/ (Soon generating code compiled by GCC). It is not GCC related. -- Basile Starynkevitch (only mine opinions / les opinions sont miennes uniquement) 92340 Bourg-la-Reine, France web page: starynkevitch.net/Basile/