From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2155) id B07793858033; Mon, 20 Mar 2023 11:58:44 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B07793858033 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1679313524; bh=6P0L7tGoQrkqVSV6TnxJWIiQKzxWC0ytcnDr1B4qrLU=; h=From:To:Subject:Date:From; b=k7sXdTZx6rPeHew+fxWZbaMudQgXOXPtbjPt3gGUvtANkgluk3uOoEJxuVYBVv4gs VryIW+pEvKsBUcYQCN4eJM157DS4FBUYtoX4waY3H3ojb/jXKbJCq35jTo5r++EPe+ kKHClO51bCwMQWOVx1Z7+F3q3YQYkvTMRdonMTTs= 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: regex: fix faulty check for valid range expression X-Act-Checkin: newlib-cygwin X-Git-Author: Corinna Vinschen X-Git-Refname: refs/heads/main X-Git-Oldrev: e914374383a72810bb5d20ad8428843d70df50e1 X-Git-Newrev: 59241913330c15d25ea569f1309af1c746dc07fa Message-Id: <20230320115844.B07793858033@sourceware.org> Date: Mon, 20 Mar 2023 11:58:44 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dnewlib-cygwin.git;h=3D59241913330= c15d25ea569f1309af1c746dc07fa commit 59241913330c15d25ea569f1309af1c746dc07fa Author: Corinna Vinschen AuthorDate: Thu Mar 16 21:09:53 2023 +0100 Commit: Corinna Vinschen CommitDate: Mon Mar 20 12:58:03 2023 +0100 Cygwin: regex: fix faulty check for valid range expression =20 Except for the "C" or "POSIX" locale, checking for start <=3D finish is always wrong. Range start must be <=3D range finish in terms of the locale's collating order. So make sure to call always wcscoll(), even in the "C"/"POSIX" locale, which makes wcscoll equivalent to wcscmp anyway. =20 Signed-off-by: Corinna Vinschen Diff: --- winsup/cygwin/regex/regcomp.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/winsup/cygwin/regex/regcomp.c b/winsup/cygwin/regex/regcomp.c index 418e24a90ad2..7899ae7fce3c 100644 --- a/winsup/cygwin/regex/regcomp.c +++ b/winsup/cygwin/regex/regcomp.c @@ -1145,7 +1145,7 @@ p_b_term(struct parse *p, cset *cs) #else if (MB_CUR_MAX > 1) { #endif - (void)REQUIRE(start <=3D finish, REG_ERANGE); + (void)REQUIRE(p_range_cmp(start, finish) <=3D 0, REG_ERANGE); CHaddrange(p, cs, start, finish); } else { (void)REQUIRE(p_range_cmp(start, finish) <=3D 0, REG_ERANGE); @@ -1665,8 +1665,6 @@ CHaddrange(struct parse *p, cset *cs, wint_t min, win= t_t max) =20 for (; min < NC && min <=3D max; min++) CHadd(p, cs, min); - if (min >=3D max) - return; newranges =3D reallocarray(cs->ranges, cs->nranges + 1, sizeof(*cs->ranges)); if (newranges =3D=3D NULL) {