From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mo4-p00-ob.smtp.rzone.de (mo4-p00-ob.smtp.rzone.de [81.169.146.221]) by sourceware.org (Postfix) with ESMTPS id C0A833856DD6 for ; Tue, 18 Apr 2023 10:21:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C0A833856DD6 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=clisp.org Authentication-Results: sourceware.org; spf=none smtp.mailfrom=clisp.org ARC-Seal: i=1; a=rsa-sha256; t=1681813304; cv=none; d=strato.com; s=strato-dkim-0002; b=dscTB5zEZOxNi1uW5lLkLBo6rr5llyHTHy2A0qyXkzrr340MqiyxOS/BnNiayZ7CpC AoPbUeQYFb+6l7S9DTfxxrzYJjJ9iF3gXnagRc410qwXCuqFF7l9TV92CRVjvUZ/9LBz z0WcIpcfsApckQanRZhPHl0f/VARhdS9egUolWIAdJGzZPxDMOZo2sAK26hiPHDoitFH gJGSWESVioxgtyMCgWqZbj5Y27GMoKb5fS/dkj9jszOxAuP4fY5un9HKM560ucWlGbxZ S1RWCQbk50EoiV9CAflvlUdJL0xmfE5rAkFP17GOZ9sEGsH4iS3XkEYzU3zjHyzI4zgO qbGA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1681813304; s=strato-dkim-0002; d=strato.com; h=Message-ID:Date:Subject:To:From:Cc:Date:From:Subject:Sender; bh=nGQBSG28OXmhzkuoN+Cbf2I6Urh+o0quBS07UdNTshg=; b=RSDesu/pcoyZ5NAkh62u2Erf3fFiag+QkO5a2gumqrLol4r1yE1Lr3qZ/XEm7eJymN 5IJzmL5Uwz1W4Ik/A/j+kcRZ5thCmCatNfFnvDEQHVsmKuMrtOI0fymaaheAByQdudQ2 Ipg72Vb8zt+luqvpeV7xNBfNkuKXuzTIjaqk373E2mvfOG9z6HRbMsIR5ybyF5ccGeij LvpQOEgxcQh5BiaJN+3X63s12Dfd63k6gDxFAQ6ERLg9Qu5m/8rW54+8qLkyjNaWXwlY +qqNe0SjtQviuwBrku4GIlF2h8wsYMtGBug9XQE8k9PYP1fkD38kTCIX7okKdO3lsCJB TO2w== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo00 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1681813304; s=strato-dkim-0002; d=clisp.org; h=Message-ID:Date:Subject:To:From:Cc:Date:From:Subject:Sender; bh=nGQBSG28OXmhzkuoN+Cbf2I6Urh+o0quBS07UdNTshg=; b=PPUBg067VV4hqL+3oJfnSzzyi/pxJqFFlJT58k5hslpjw5qWNbqmle1MS1Uf90oAOC d2TYHFE81zgHn7h128pSoi54Cxu/37dyK7gyDpJh4CiJBKqY2o6VSrLcS9yB2ByKklk1 dpUkFDKqcCUZQgHwMkn/NjQHUyO53pQOGEcyizW+WoefW+vKcaPYNRhoUcO/SmBfeBRK 5eUUfKLQiD2t3OXzCaTJlrlFOSxKNmQalw6dPcNsf0dIcwJJGWg4cTuyyjUTin/iVpcn iLDeDVdzgdLGW5KhLMxkkafHV/ASWLptLKfAhXhKPZqIMordT5RbInT6F+6fcIAB17l1 mWNQ== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1681813304; s=strato-dkim-0003; d=clisp.org; h=Message-ID:Date:Subject:To:From:Cc:Date:From:Subject:Sender; bh=nGQBSG28OXmhzkuoN+Cbf2I6Urh+o0quBS07UdNTshg=; b=w7N89jcrxc7sTYRHU01Ov8+3ntq/cQI5rUlJE1zURCMLfAwVExU6cmwKkwGaFqokcr toKUZPv4V5a3zey982Cw== X-RZG-AUTH: ":Ln4Re0+Ic/6oZXR1YgKryK8brlshOcZlIWs+iCP5vnk6shH0WWb0LN8XZoH94zq68+3cfpOT2vN+j99710EKugYHXkRHprwZvw==" Received: from nimes.localnet by smtp.strato.de (RZmta 49.4.0 AUTH) with ESMTPSA id D064b6z3IALhTsv (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Tue, 18 Apr 2023 12:21:43 +0200 (CEST) From: Bruno Haible To: cygwin@cygwin.com Subject: wrong errno value set by readlinkat() Date: Tue, 18 Apr 2023 12:21:43 +0200 Message-ID: <12553230.hYdu0Ggh8K@nimes> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Spam-Status: No, score=-3.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Hi, When an empty path argument is passed to the readlinkat() function, POSIX:2018 specifies that the function fails with error ENOENT: https://pubs.opengroup.org/onlinepubs/9699919799/functions/readlinkat.html "These functions shall fail if: ... [ENOENT] A component of path does not name an existing file or path is an empty string." In Cygwin 3.4.6, readlinkat() fails with error EBADF instead. How to reproduce: ============================== foo.c =================================== #include #include #include #include #include int main () { char buf[80]; int ret = readlinkat (AT_FDCWD, "", buf, sizeof (buf)); int err = errno; printf ("ret = %d, errno = %d = \"%s\"\n", ret, err, strerror (err)); return 0; } ======================================================================== $ gcc -Wall foo.c $ ./a.exe Expected output: ret = -1, errno = 2 = "No such file or directory" Actual output: ret = -1, errno = 9 = "Bad file descriptor" Bruno