|
Message-ID: <20190930174108.GR9017@brightrain.aerifal.cx> Date: Mon, 30 Sep 2019 13:41:08 -0400 From: Rich Felker <dalias@...c.org> To: musl@...ts.openwall.com Subject: Re: Hangup calling setuid() from vfork() child On Mon, Sep 30, 2019 at 08:29:16AM -0700, Joshua Hudson wrote: > If there is more than one thread and vfork() calls setuid(), musl libc hangs up. > > void *thfunction(void*ig) {sleep(1000);returnNULL;} > > int main() > { > pthread_t id; > pthread_create(&id, NULL, thfunction, NULL); > if (vfork() == 0) { > setuid(0); /* hangup */ > _exit(0); > } > } This is expected; the only legal action after vfork is _exit or execve. In practice you could probably get by with syscall(SYS_setuid,0) or similar in the child, but this isn't supported usage and the specification for vfork has always been clear that you can't do arbitrary stuff in the child. If you need to, you should be using fork. Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.