about summary refs log tree commit diff
path: root/nptl/pthreadP.h
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2014-07-10 17:34:46 +0200
committerFlorian Weimer <fweimer@redhat.com>2014-07-11 12:30:53 +0200
commit771eb1415fde935e377111f69364a5d92a29e67d (patch)
tree1e9dd40b64e87fe715c4bc7ccee7487c6e500a8a /nptl/pthreadP.h
parentbc1da1765e901a9a9f532f91d09f5237655e01fd (diff)
downloadglibc-771eb1415fde935e377111f69364a5d92a29e67d.tar.gz
glibc-771eb1415fde935e377111f69364a5d92a29e67d.tar.xz
glibc-771eb1415fde935e377111f69364a5d92a29e67d.zip
nptl: Fix abort in case of set*id failure [BZ #17135]
If a call to the set*id functions fails in a multi-threaded program,
the abort introduced in commit 13f7fe35ae2b0ea55dc4b9628763aafdc8bdc30c
was triggered.

We address by checking that all calls to set*id on all threads give
the same result, and only abort if we see success followed by failure
(or vice versa).
Diffstat (limited to 'nptl/pthreadP.h')
-rw-r--r--nptl/pthreadP.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index 197401af89..94e7890fa5 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -578,6 +578,8 @@ extern void _pthread_cleanup_pop_restore (struct _pthread_cleanup_buffer *buffer
 
 extern void __nptl_deallocate_tsd (void) attribute_hidden;
 
+extern void __nptl_setxid_error (struct xid_command *cmdp, int error)
+  attribute_hidden;
 extern int __nptl_setxid (struct xid_command *cmdp) attribute_hidden;
 #ifndef SHARED
 extern void __nptl_set_robust (struct pthread *self);