From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from relay1-d.mail.gandi.net (relay1-d.mail.gandi.net [IPv6:2001:4b98:dc4:8::221]) by sourceware.org (Postfix) with ESMTPS id 52C48385843E for ; Mon, 14 Feb 2022 13:12:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 52C48385843E 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 32F9F24000A; Mon, 14 Feb 2022 13:12:32 +0000 (UTC) Message-ID: Date: Mon, 14 Feb 2022 14:12:31 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Subject: Re: GSoC: Working on the static analyzer Content-Language: en-US From: Basile Starynkevitch To: gcc@gcc.gnu.org, mirimnan017@gmail.com References: <8e40d86b-8d93-cf29-e53e-a634b1fe2129@starynkevitch.net> In-Reply-To: <8e40d86b-8d93-cf29-e53e-a634b1fe2129@starynkevitch.net> X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00, HTML_MESSAGE, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, NICE_REPLY_A, 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: 8bit 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:12:39 -0000 On 2/14/22 13:59, Basile Starynkevitch wrote: > > 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. > Be of course aware of Rice's theorem 😁 so don't expect writing the ultimate, perfect, static source code (or Gimple code) analyzer. Cheers -- Basile Starynkevitch (only mine opinions / les opinions sont miennes uniquement) 92340 Bourg-la-Reine, France web page: starynkevitch.net/Basile/