[Toybox] [PATCH] lib: getdirname fix seqfault on null ptr

enh enh at google.com
Mon Oct 21 15:56:04 PDT 2019


On Mon, Oct 21, 2019 at 3:08 PM Rob Landley <rob at landley.net> wrote:
>
> On 10/19/19 1:59 AM, Jarno Mäkipää wrote:
> > In order to be used as drop in replacement for dirname()
> >
> > If path is a null pointer or points to an empty string,
> > dirname() shall return a pointer to the string "." .
>
> Applied, but it's not a drop-in replacement because it returns a malloc() and
> the other either modifies its input string (!) or returns a static ".".
>
> I made getdirname() because A) modifying your input argument is rude, B) I
> needed to do getbasename() anyway (which glibc has two versions of that behave
> differently, depending on which header you include first) and I wanted a
> getdirname() with the same semantics as that.
>
> Unfortunately, I misremembered getbasename()'s semantics, and it's _not_
> returning a malloc. It's just returning either strrchr(name, '.')+1 or name if
> there's no '/'; So my cp cleannup segfaulted until I moved the free() back under
> the if (FLAG(D)) and now I want to fix the semantics to be consistent and I'm
> tempted to rip getdirname back _out_ except modifying your argument is still
> unfortunate...
>
> (Sorry, I'm getting a bit overwhelmed juggling as many patches and bug reports
> as I'm getting. I cut the release, but I still need to track down the tar bug
> report, and I think I've dropped at least one of Elliott's xargs patches,

(i resent the rebase of that last night. i'll go and ping it so you
know which one it is :-) )

> there's trailing ls spaces, people keep doing github comments instead of mailing
> list stuff which get dropped on the floor regularly because there's no obvious
> replacement for a mailing list archive there...)
>
> Rob
> _______________________________________________
> Toybox mailing list
> Toybox at lists.landley.net
> http://lists.landley.net/listinfo.cgi/toybox-landley.net



More information about the Toybox mailing list