[PATCH 1/1] makedevs: set path size to match linux

Jared Bents jared.bents at rockwellcollins.com
Tue Jun 27 13:36:56 UTC 2017


On Mon, Jun 26, 2017 at 10:31 PM, Baruch Siach <baruch at tkos.co.il> wrote:
> 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 <logout at free.fr> wrote:
>> > On Mon, Jun 26, 2017 at 11:23 PM, Matthew Weber
>> > <matthew.weber at rockwellcollins.com> wrote:
>> >> On Mon, Jun 26, 2017 at 3:55 PM, Baruch Siach <baruch at tkos.co.il> wrote:
>> >> > On Mon, Jun 26, 2017 at 03:33:09PM -0500, Matt Weber wrote:
>> >> >> From: Jared Bents <jared.bents at 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.bents at rockwellcollins.com>
>> >> >> Signed-off-by: Matt Weber <matthew.weber at 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.
>
> baruch
>
> --
>      http://baruch.siach.name/blog/                  ~. .~   Tk Open Systems
> =}------------------------------------------------ooO--U--Ooo------------{=
>    - baruch at tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -

Apologies to anyone who got my last email outside of the mailing list.
My email was blocked as I wasn't subscribed.

The 'STRINGIFY(PATH_MAX)' is fine.  A line was left out of the update
for v2 of the patch.  I had also changed 'char name[4096];' to 'char
name[PATH_MAX+1];' to prevent an overflow.


More information about the busybox mailing list