Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date: Tue, 14 Nov 2023 10:38:04 -0500
From: Rich Felker <dalias@...c.org>
To: Bruno Haible <bruno@...sp.org>
Cc: musl@...ts.openwall.com
Subject: Re: *printf %lc of L'\0'

On Tue, Nov 14, 2023 at 02:22:46PM +0100, Bruno Haible wrote:
> Hi,
> 
> On 2023-03-21 I noticed a bug with %lc in most libcs:
> <https://lists.gnu.org/archive/html/bug-gnulib/2023-03/msg00080.html>.
> 
> On 2023-03-28 Eric Blake opened a defect with POSIX, with the intent that
> both ISO C and POSIX make the four *printf cases consistent:
> <https://austingroupbugs.net/view.php?id=1647>
> 
> This issue was then submitted in the ISO C 23 ballot as GB-141,
> and in the meeting from 2023-06-20 to 2023-06-23 it was decided upon:
> <https://www.open-std.org/JTC1/sc22/wg14/www/docs/n3167.pdf>
> page 23, 24. The decision ("option 1") is detailed in
> <https://www.open-std.org/JTC1/sc22/wg14/www/docs/n3148.doc>:
>   "Option 1 (require a NUL) - change the text to:
>    If an l length modifier is present, the wint_t argument is converted
>    as if by a call to the wcrtomb function with a pointer to storage of
>    at least MB_CUR_MAX bytes, the wint_t argument converted to wchar_t,
>    and an initial shift state."
> 
> So, ISO C changed, and POSIX will follow suit.
> 
> The bug in most libcs is thus no longer a bug.

Yep, I have a patch for it as of a few days ago, which should make it
in the next release.

> musl libc, which had it correct, now has a bug.

Well, not a "bug" until the next standard is published and we claim
aiming to support it, but yes, something that should be changed. :-)

Rich

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.