OSDN Git Service

fix invalid pointer in synccall (multithread setuid, etc.)
authorRich Felker <dalias@aerifal.cx>
Mon, 2 Sep 2013 19:06:46 +0000 (15:06 -0400)
committerRich Felker <dalias@aerifal.cx>
Mon, 2 Sep 2013 19:06:46 +0000 (15:06 -0400)
the head pointer was not being reset between calls to synccall, so any
use of this interface more than once would build the linked list
incorrectly, keeping the (now invalid) list nodes from the previous
call.

src/thread/synccall.c

index 706c8e7..c54570b 100644 (file)
@@ -58,6 +58,7 @@ void __synccall(void (*func)(void *), void *ctx)
        sem_init(&chaindone, 0, 0);
        sem_init(&chainlock, 0, 1);
        chainlen = 0;
+       head = 0;
        callback = func;
        context = ctx;