Re: /bin/ls formatting broken for non-C(?) locales

From: Andrey Chernov <ache_at_freebsd.org>
Date: Wed, 25 Nov 2015 18:31:16 +0300
On 25.11.2015 18:12, Andrey Chernov wrote:
> On 25.11.2015 17:35, Baptiste Daroussin wrote:
>>> BTW, array size looks suspicious:
>>> static wchar_t wab_months[12][MAX_ABMON_WIDTH * 2 * MB_LEN_MAX];
>>> what MB_LEN_MAX doing here? This constant is for multiple-bytes encoded,
>>> not for wide chars.
>> Bad copy/paste sorry it should be "MAX_ABMON_WIDTH * 2"
> 
> I don't check deep enough, it seems first array
> MAX_ABMON_WIDTH * MB_LEN_MAX + 1
> and second one
> MAX_ABMON_WIDTH * 2 + 1
> 

No. We can't assume anything here and should integrate limits from the
locale for months fields instead. F.e. in abstract general case in wide
array can be 100 zero-width characters + 5 of normal characters, so
width-oriented sizes not prevents overflowing.

First array size should be from locale internals,
second one == first * sizeof(wchar_t)
it will be safe for not overflowing.

-- 
http://ache.vniz.net/


Received on Wed Nov 25 2015 - 14:31:21 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:01 UTC