diff options
author | Florian Weimer <fweimer@redhat.com> | 2014-07-10 17:34:46 +0200 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2014-07-11 12:30:53 +0200 |
commit | 771eb1415fde935e377111f69364a5d92a29e67d (patch) | |
tree | 1e9dd40b64e87fe715c4bc7ccee7487c6e500a8a /nptl/pthreadP.h | |
parent | bc1da1765e901a9a9f532f91d09f5237655e01fd (diff) | |
download | glibc-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.h | 2 |
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); |