[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