Am 27.06.2017 05:31, schrieb Baruch Siach:
> Hi Matthew,
> 
> On Mon, Jun 26, 2017 at 08:45:42PM -0500, Matthew Weber wrote:
>> On Mon, Jun 26, 2017 at 7:36 PM, Emmanuel Deloget <log...@free.fr> wrote:
>>> On Mon, Jun 26, 2017 at 11:23 PM, Matthew Weber
>>> <matthew.we...@rockwellcollins.com> wrote:
>>>> On Mon, Jun 26, 2017 at 3:55 PM, Baruch Siach <bar...@tkos.co.il> wrote:
>>>>> On Mon, Jun 26, 2017 at 03:33:09PM -0500, Matt Weber wrote:
>>>>>> From: Jared Bents <jared.be...@rockwellcollins.com>
>>>>>>
>>>>>> Update to increase the pathname limit to the
>>>>>> linux limit of 4096 characters.
>>>>>>
>>>>>> Similar patch:
>>>>>> https://patchwork.openembedded.org/patch/131475/
>>>>>>
>>>>>> Signed-off-by: Jared Bents <jared.be...@rockwellcollins.com>
>>>>>> Signed-off-by: Matt Weber <matthew.we...@rockwellcollins.com>
>>>>>> ---
>>>>>>  miscutils/makedevs.c | 4 ++--
>>>>>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>>>>>
>>>>>> diff --git a/miscutils/makedevs.c b/miscutils/makedevs.c
>>>>>> index 9e7ca34..0049edb 100644
>>>>>> --- a/miscutils/makedevs.c
>>>>>> +++ b/miscutils/makedevs.c
>>>>>> @@ -208,7 +208,7 @@ int makedevs_main(int argc UNUSED_PARAM, char
>>>>>> **argv)
>>>>>>               unsigned count = 0;
>>>>>>               unsigned increment = 0;
>>>>>>               unsigned start = 0;
>>>>>> -             char name[41];
>>>>>> +             char name[4096];
>>>>>
>>>>> Why not use PATH_MAX here?
>>>>
>>>> Agree, that would be cleaner.  Will submit v2 after some testing.
>>>>
>>>> That still leaves a hardcoded value in the sscanf  of 4095........
>>>> should I add a comment to the affect we're assuming PATH_MAX is at
>>>> least 4096?  Maybe a check is also needed?
>>>
>>>
>>> Alternatively you may use the m modifier, when implemented, to auto-allocate
>>> the name pointer. This way you don't have to hardcode anything in the
>>> sscanf(), you let the library for the job for you. Later, you can check the
>>> string length.
>>>
>>> Such a change would induce an allocation, a free but will also reduce stack
>>> usage.
>>>
>>
>> If we want to keep it all static, another option would be to stringify
>> that define.
>> (Courtesy Jared for this idea)
>>
>> + #define STRINGIFY(x) STRINGIFY2(x)
>> + #define STRINGIFY2(x) #x
>> .....
>> - if ((2 > sscanf(line, "%40s %c %o %40s %40s %u %u %u %u %u",
>> + if ((2 > sscanf(line, "%" STRINGIFY(PATH_MAX) "s %c %o %40s %40s %u
>> %u %u %u %u",
> 
> You need 'STRINGIFY(PATH_MAX-1)'. I'm not sure this does what you mean.
> 

May i ask "what is the problem (beyond truncation) what we want to solve" ?
It there a need for "unlimited" length ?

Independed of that it would be possible the use the %m modifier for scanf.
(and break older verions of glibc).
see: 
https://stackoverflow.com/questions/38685724/difference-between-ms-and-s-scanf

re,
 wh


_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to