Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20221108030824.GG29905@brightrain.aerifal.cx>
Date: Mon, 7 Nov 2022 22:08:25 -0500
From: Rich Felker <dalias@...c.org>
To: Dmitry Bogatov <oht-tfnfy#tah.bet#i1@...tion.cc>
Cc: bug-gsasl@....org, musl@...ts.openwall.com
Subject: Re: Behaviour of strverscmp(3)

On Sun, Nov 06, 2022 at 06:39:04PM -0500, Rich Felker wrote:
> On Sun, Nov 06, 2022 at 06:18:22PM -0500, Dmitry Bogatov wrote:
> > Hello.
> > 
> > While trying to building gsasl statically with musl library as part of
> > Nixpkgs distribution, I noticed that test built from tests/version.c
> > fails when built with musl library. After a bit of troubleshooting, I
> > can pinpoint the reason -- different behaviour of "strverscmp" from
> > glibc and musl.
> > 
> > Example code:
> > 
> > #include <string.h>
> > #include <stdio.h>
> > 
> > int main()
> > {
> > 	int value = strverscmp("UNKNOWN", "2.2.0");
> > 	printf("%d\n", value);
> > 	return 0;
> > }
> > 
> > Under glibc value "35" is printed (positive), under musl value "-1" is
> > printed (negative). Not sure what is the correct solution for the
> > issue, so I cross-post into two lists.
> > 
> > For now I plan to patch-out this particular test. Thank you.
> 
> It looks like we're neglecting to honor the exception case to "longer
> digit sequence is greater" when one of the sequences is degenerate (no
> digits).

I think the attached patch fixes it in the most non-invasive way
that's most clear in avoiding other unwanted side effects. It
basically says "only apply the longest-digit-sequence" rule if there
is a common nonzero length [[:digit:]]+ match (dp is the position
where digit sequence starts, j is the test position).

I think this code should be reviewed for additional bugs though.

Rich

View attachment "strverscmp.diff" of type "text/plain" (689 bytes)

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.