aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Hahn <sebastian@torproject.org>2011-04-26 04:23:35 +0200
committerNick Mathewson <nickm@torproject.org>2011-05-09 13:19:45 -0400
commit1827e60976d54d1917dfc54bdf62b4818662ac12 (patch)
tree6391268aa06f48a54640f3730114a35ca2f7ffe1
parent8ebb3ce6e27c104e35d65662c04d23795f2b5605 (diff)
downloadtor-1827e60976d54d1917dfc54bdf62b4818662ac12.tar.gz
tor-1827e60976d54d1917dfc54bdf62b4818662ac12.zip
Fix a potential null deref when rebuilding md cache
Issue discovered using clang's static analyzer
-rw-r--r--changes/mdesc_null_deref5
-rw-r--r--src/or/microdesc.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/changes/mdesc_null_deref b/changes/mdesc_null_deref
new file mode 100644
index 0000000000..30f0280536
--- /dev/null
+++ b/changes/mdesc_null_deref
@@ -0,0 +1,5 @@
+ o Minor bugfixes:
+ - Avoid a possible null-pointer dereference when rebuilding the mdesc
+ cache without actually having any descriptors to cache. Bugfix on
+ 0.2.2.6-alpha. Issue discovered using clang's static analyzer.
+
diff --git a/src/or/microdesc.c b/src/or/microdesc.c
index 73d2285009..5740c40d5f 100644
--- a/src/or/microdesc.c
+++ b/src/or/microdesc.c
@@ -423,7 +423,7 @@ microdesc_cache_rebuild(microdesc_cache_t *cache, int force)
cache->journal_len = 0;
cache->bytes_dropped = 0;
- new_size = (int)cache->cache_content->size;
+ new_size = cache->cache_content ? (int)cache->cache_content->size : 0;
log_info(LD_DIR, "Done rebuilding microdesc cache. "
"Saved %d bytes; %d still used.",
orig_size-new_size, new_size);