summaryrefslogtreecommitdiffstats
path: root/net/disk_cache/rankings.cc
diff options
context:
space:
mode:
Diffstat (limited to 'net/disk_cache/rankings.cc')
-rw-r--r--net/disk_cache/rankings.cc11
1 files changed, 10 insertions, 1 deletions
diff --git a/net/disk_cache/rankings.cc b/net/disk_cache/rankings.cc
index 3644932..12ccdd6 100644
--- a/net/disk_cache/rankings.cc
+++ b/net/disk_cache/rankings.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -508,6 +508,15 @@ bool Rankings::SanityCheck(CacheRankingsBlock* node, bool from_list) {
if ((node->address().value() == data->next) && !IsTail(data->next, &list))
return false;
+ if (!data->next && !data->prev)
+ return true;
+
+ Addr next_addr(data->next);
+ Addr prev_addr(data->prev);
+ if (!next_addr.SanityCheck() || next_addr.file_type() != RANKINGS ||
+ !prev_addr.SanityCheck() || prev_addr.file_type() != RANKINGS)
+ return false;
+
return true;
}