diff options
author | Diederik de Groot <dkgroot@talon.nl> | 2016-04-21 15:26:47 +0200 |
---|---|---|
committer | Joshua Colp <jcolp@digium.com> | 2016-04-21 11:35:37 -0500 |
commit | e750ea9b5bae47dc6127631dfefc4fb969ab9160 (patch) | |
tree | f5838f893048400d0ce9c648e3fa4d0041ac3a35 /main | |
parent | b1b34607830a55bedbc37c303ee1488a2c62c948 (diff) |
lock.c: Check *lt before dereferencing it
*lt is NULL if t->tracking == 0
ASTERISK-25948 #close
Change-Id: I4a81af28f9c82a74aa82413d772a7dc8fa6f45ba
Diffstat (limited to 'main')
-rw-r--r-- | main/lock.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/main/lock.c b/main/lock.c index dd90d7bd9..03f1cd974 100644 --- a/main/lock.c +++ b/main/lock.c @@ -286,17 +286,19 @@ int __ast_pthread_mutex_lock(const char *filename, int lineno, const char *func, if (wait_time > reported_wait && (wait_time % 5) == 0) { __ast_mutex_logger("%s line %d (%s): Deadlock? waited %d sec for mutex '%s'?\n", filename, lineno, func, (int) wait_time, mutex_name); - ast_reentrancy_lock(lt); + if (lt) { + ast_reentrancy_lock(lt); #ifdef HAVE_BKTR - __dump_backtrace(<->backtrace[lt->reentrancy], canlog); + __dump_backtrace(<->backtrace[lt->reentrancy], canlog); #endif - __ast_mutex_logger("%s line %d (%s): '%s' was locked here.\n", - lt->file[ROFFSET], lt->lineno[ROFFSET], - lt->func[ROFFSET], mutex_name); + __ast_mutex_logger("%s line %d (%s): '%s' was locked here.\n", + lt->file[ROFFSET], lt->lineno[ROFFSET], + lt->func[ROFFSET], mutex_name); #ifdef HAVE_BKTR - __dump_backtrace(<->backtrace[ROFFSET], canlog); + __dump_backtrace(<->backtrace[ROFFSET], canlog); #endif - ast_reentrancy_unlock(lt); + ast_reentrancy_unlock(lt); + } reported_wait = wait_time; } usleep(200); |