From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2155) id 82F7C3858C35; Wed, 28 Feb 2024 09:01:13 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 82F7C3858C35 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1709110873; bh=0odaU/yFmgt7zP1aFMEVsoenVwCoKHLB0ZnSGjkKy30=; h=From:To:Subject:Date:From; b=H7FU7q0vFv2IrNOqqwW7X3Zz+XPMOgl/aP1uQDv4VB7+tT5XandBBgovdHzub4Enh JSgqy6knNY1xLssW2Xoy/VIUUhgdzK0wZdHejHTiAkoj/NmSD8I475CuTDptCgrgQ5 l0kerKUvNRqdUkrnEp3YtjaBr4RIZ5V8LwteW3sk= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Corinna Vinschen To: cygwin-cvs@sourceware.org Subject: [newlib-cygwin/main] Cygwin: set ENOSHARE and ECASECLASH _sys_errlist[] entries to empty X-Act-Checkin: newlib-cygwin X-Git-Author: Christian Franke X-Git-Refname: refs/heads/main X-Git-Oldrev: 6f996d7751bf25f7e4282da631eb79b93662e484 X-Git-Newrev: ee97ae1d5f4d42d47d828a1b4d9b05ec9cbfe042 Message-Id: <20240228090113.82F7C3858C35@sourceware.org> Date: Wed, 28 Feb 2024 09:01:13 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dnewlib-cygwin.git;h=3Dee97ae1d5f4= d42d47d828a1b4d9b05ec9cbfe042 commit ee97ae1d5f4d42d47d828a1b4d9b05ec9cbfe042 Author: Christian Franke AuthorDate: Tue Feb 27 17:21:45 2024 +0100 Commit: Corinna Vinschen CommitDate: Wed Feb 28 09:59:07 2024 +0100 Cygwin: set ENOSHARE and ECASECLASH _sys_errlist[] entries to empty =20 These errno values are no longer used by Cygwin. Change the entries to empty strings instead of NULL to avoid crashes in existing binaries directly accessing the table. Enhance strerror_worker() such that empty strings also result in "Unknown error ..." messages. Also add a static_assert check for the _sys_errlist[] size. =20 Signed-off-by: Christian Franke Diff: --- winsup/cygwin/errno.cc | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/errno.cc b/winsup/cygwin/errno.cc index 7d58e62ec142..004a4021e27b 100644 --- a/winsup/cygwin/errno.cc +++ b/winsup/cygwin/errno.cc @@ -167,8 +167,8 @@ const char *_sys_errlist[] =3D /* ESTALE 133 */ "Stale NFS file handle", /* ENOTSUP 134 */ "Not supported", /* ENOMEDIUM 135 */ "No medium found", -/* ENOSHARE 136 */ "No such host or network path", -/* ECASECLASH 137 */ "Filename exists with different case", + "", /* Was ENOSHARE 136, no longer used. */ + "", /* Was ECASECLASH 137, no longer used. */ /* EILSEQ 138 */ "Invalid or incomplete multibyte or wide character", /* EOVERFLOW 139 */ "Value too large for defined data type", /* ECANCELED 140 */ "Operation canceled", @@ -177,6 +177,8 @@ const char *_sys_errlist[] =3D /* ESTRPIPE 143 */ "Streams pipe error" }; =20 +static_assert(143 + 1 =3D=3D sizeof (_sys_errlist) / sizeof (_sys_errlist[= 0])); + int NO_COPY_INIT _sys_nerr =3D sizeof (_sys_errlist) / sizeof (_sys_errlis= t[0]); }; =20 @@ -228,7 +230,11 @@ strerror_worker (int errnum) { char *res; if (errnum >=3D 0 && errnum < _sys_nerr) - res =3D (char *) _sys_errlist [errnum]; + { + res =3D (char *) _sys_errlist [errnum]; + if (res && !*res) + res =3D NULL; + } else res =3D NULL; return res;