about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2013-09-02 15:06:46 -0400
committerRich Felker <dalias@aerifal.cx>2013-09-02 15:06:46 -0400
commita731e4103b87cb02b763f2e3f73cc43c72bdf65f (patch)
treeed6b976e0e0e827cb3d08173a8a850c76eeb51fc /src
parentfe80a8eb687f48f08e393522520f69b0c52cb297 (diff)
downloadmusl-a731e4103b87cb02b763f2e3f73cc43c72bdf65f.tar.gz
musl-a731e4103b87cb02b763f2e3f73cc43c72bdf65f.tar.xz
musl-a731e4103b87cb02b763f2e3f73cc43c72bdf65f.zip
fix invalid pointer in synccall (multithread setuid, etc.)
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.
Diffstat (limited to 'src')
-rw-r--r--src/thread/synccall.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/thread/synccall.c b/src/thread/synccall.c
index 706c8e73..c54570be 100644
--- a/src/thread/synccall.c
+++ b/src/thread/synccall.c
@@ -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;