From f0daeb377e9df0fd664027d92d63178769d11986 Mon Sep 17 00:00:00 2001 From: Andrea Fioraldi Date: Thu, 4 Nov 2021 17:49:07 +0100 Subject: [PATCH] Fix double borrow mut in CachedOnDiskCorpus (#347) --- libafl/src/corpus/cached.rs | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/libafl/src/corpus/cached.rs b/libafl/src/corpus/cached.rs index ecb3970242..a75d92862d 100644 --- a/libafl/src/corpus/cached.rs +++ b/libafl/src/corpus/cached.rs @@ -66,19 +66,18 @@ where let testcase = { self.inner.get(idx)? }; if testcase.borrow().input().is_none() { let _ = testcase.borrow_mut().load_input()?; - let current = *self.current(); + let mut borrowed_num = 0; while self.cached_indexes.borrow().len() >= self.cache_max_len { let removed = self.cached_indexes.borrow_mut().pop_front().unwrap(); - if let Some(cur) = current { - if cur == removed { - self.cached_indexes.borrow_mut().push_back(cur); - if self.cache_max_len == 1 { - break; - } - continue; + if let Ok(mut borrowed) = self.inner.get(removed)?.try_borrow_mut() { + *borrowed.input_mut() = None; + } else { + self.cached_indexes.borrow_mut().push_back(removed); + borrowed_num += 1; + if self.cache_max_len == borrowed_num { + break; } } - *self.inner.get(removed)?.borrow_mut().input_mut() = None; } self.cached_indexes.borrow_mut().push_back(idx); }