summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRalph Boehme <slow@samba.org>2018-07-03 15:30:33 +0200
committerKarolin Seeger <kseeger@samba.org>2018-07-12 13:10:26 +0200
commitc7bedb9c603ebcec339290ba475bc344928fbff5 (patch)
tree6ba2116ac2714b2c903c1efd2e729828c28c4223 /lib
parentadef988e517384f80dd21f187bf63a54efe8efbd (diff)
downloadsamba-c7bedb9c603ebcec339290ba475bc344928fbff5.tar.gz
lib: smb_threads: fix access before init bug
talloc_stackframe_internal() calls SMB_THREAD_GET_TLS(global_ts) which calls smb_get_tls_pthread() in the POSIX pthread wrapper implementation. If SMB_THREAD_SET_TLS() hasn't been called before, global_ts is NULL and smb_get_tls_pthread dereferences it so it crashes. Bug: https://bugzilla.samba.org/show_bug.cgi?id=13505 Signed-off-by: Ralph Boehme <slow@samba.org> Reviewed-by: Andreas Schneider <asn@samba.org> (cherry picked from commit e311801e0e7171a2b50e39d3e0c2d2137f8b3d7e)
Diffstat (limited to 'lib')
-rw-r--r--lib/util/smb_threads.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/util/smb_threads.h b/lib/util/smb_threads.h
index 9a096167743..67d05b8c411 100644
--- a/lib/util/smb_threads.h
+++ b/lib/util/smb_threads.h
@@ -119,6 +119,9 @@ static int smb_set_tls_pthread(void *pkey, const void *pval, const char *locatio
\
static void *smb_get_tls_pthread(void *pkey, const char *location) \
{ \
+ if (pkey == NULL) { \
+ return NULL; \
+ } \
return pthread_getspecific(*(pthread_key_t *)pkey); \
} \
\