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

Baruch Siach baruch at tkos.co.il
Tue Jun 27 03:31:46 UTC 2017


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 -


More information about the busybox mailing list