diff options
author | eutarass | 2010-06-18 19:46:52 +0000 |
---|---|---|
committer | eutarass | 2010-06-18 19:46:52 +0000 |
commit | 94bb03219c775eafbbb1b03b5ddb54846eca7026 (patch) | |
tree | 1a7a4ff584fdf01975a6496e484ed50e2733e213 | |
parent | 92318363e34bb3db2dec5b70f1253466fc997318 (diff) | |
download | org.eclipse.tcf.agent-94bb03219c775eafbbb1b03b5ddb54846eca7026.tar.gz org.eclipse.tcf.agent-94bb03219c775eafbbb1b03b5ddb54846eca7026.tar.xz org.eclipse.tcf.agent-94bb03219c775eafbbb1b03b5ddb54846eca7026.zip |
TCF Agent: fixed regression: agent can crash by null pointer dereference when DWARF cache is disposed
-rw-r--r-- | services/dwarfcache.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/services/dwarfcache.c b/services/dwarfcache.c index 96a83a15..9228e6fd 100644 --- a/services/dwarfcache.c +++ b/services/dwarfcache.c @@ -709,15 +709,17 @@ static void free_dwarf_cache(ELF_File * File) { loc_free(tbl->mHashNext); loc_free(tbl); } - for (i = 0; i < OBJ_HASH_SIZE; i++) { - ObjectInfo ** list = Cache->mObjectHash + i; - while (*list != NULL) { - ObjectInfo * Info = *list; - *list = Info->mHashNext; - loc_free(Info); + if (Cache->mObjectHash != NULL) { + for (i = 0; i < OBJ_HASH_SIZE; i++) { + ObjectInfo ** list = Cache->mObjectHash + i; + while (*list != NULL) { + ObjectInfo * Info = *list; + *list = Info->mHashNext; + loc_free(Info); + } } + loc_free(Cache->mObjectHash); } - loc_free(Cache->mObjectHash); loc_free(Cache->mSymSections); loc_free(Cache->mAddrRanges); loc_free(Cache); |