[prev in list] [next in list] [prev in thread] [next in thread] 

List:       busybox
Subject:    Re: [PATCH v2 1/2] mktemp: avoid removed mktemp()
From:       Rich Felker <dalias () aerifal ! cx>
Date:       2014-04-15 1:09:01
Message-ID: 20140415010901.GW26358 () brightrain ! aerifal ! cx
[Download RAW message or body]

On Mon, Apr 14, 2014 at 02:29:21PM +0200, Denys Vlasenko wrote:
> On Mon, Apr 14, 2014 at 12:20 PM, Bernhard Reutner-Fischer
> <rep.dot.nop@gmail.com> wrote:
> >> This is a change in behavior - now we would
> >> actually create, and then immediately delete the directory
> >> if run as "mktemp -du".
> >>
> >> I have mixed feelings about that.
> >> Do you think it's ok?
> >
> > I think it's ok, yes. The race-window is about the same as
> > before, the creat()/unlink() do make it a bit slower but that
> > is IMO ok.
> 
> There was no race at all before for "mktemp -n" case:
> 
>         if (opts & OPT_u) {
>                 chp = mktemp(chp);
>                 if (chp[0] == '\0')
>                         goto error;
>         } else ...
>         puts(chp);
>         return EXIT_SUCCESS;
> 
> No race here.

The 'race' is in the caller, but it's not always a race. If the caller
properly uses O_EXCL or similar and retries on fail, there's no race.
Note that there are legitimate uses of mktemp -u, such as along with
mkfifo or for choosing a name for a socket or shared memory object or
similar.

> > An alternative would be to export a uClibc-specific
> > __gen_tempname() function
> 
> How about exporting a function named mktemp()?
>  ;)
> POSIX removing it from its text doesn't mean that
> a conforming libc must *not* provide it.

Agreed. I don't see any value in removing these functions. If support
for libcs that lack them is desired, a proper implementation should be
provided in busybox rather than poor hacks that involve creating and
deleting the temp file, and which could fail due to odd permission
setups, etc.

Rich
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic