Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoreutarass2010-06-18 19:46:52 +0000
committereutarass2010-06-18 19:46:52 +0000
commit94bb03219c775eafbbb1b03b5ddb54846eca7026 (patch)
tree1a7a4ff584fdf01975a6496e484ed50e2733e213
parent92318363e34bb3db2dec5b70f1253466fc997318 (diff)
downloadorg.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.c16
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);

Back to the top