This is an automated email from the ASF dual-hosted git repository.
dmeden pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/master by this push:
new 74579b6dd3 Coverity: Fix for CID-1528745, CID-1528719 and CID-1528565.
(#11875)
74579b6dd3 is described below
commit 74579b6dd333070ae776ba173cbd31c78f305ac2
Author: Damian Meden <[email protected]>
AuthorDate: Tue Nov 19 10:00:48 2024 +0100
Coverity: Fix for CID-1528745, CID-1528719 and CID-1528565. (#11875)
Fix for Use invalid iterator.
---
plugins/experimental/stek_share/log_store.cc | 41 ++++++++++++++++++----------
1 file changed, 26 insertions(+), 15 deletions(-)
diff --git a/plugins/experimental/stek_share/log_store.cc
b/plugins/experimental/stek_share/log_store.cc
index 94b3eb55c9..6abe9d5184 100644
--- a/plugins/experimental/stek_share/log_store.cc
+++ b/plugins/experimental/stek_share/log_store.cc
@@ -59,14 +59,18 @@ STEKShareLogStore::start_index() const
nuraft::ptr<nuraft::log_entry>
STEKShareLogStore::last_entry() const
{
- uint64_t next_idx = next_slot();
- std::lock_guard<std::mutex> l(logs_lock_);
- auto entry = logs_.find(next_idx - 1);
- if (entry == logs_.end()) {
- entry = logs_.find(0);
+ uint64_t next_idx = next_slot();
+ std::lock_guard<std::mutex> l(logs_lock_);
+ auto search = logs_.find(next_idx - 1);
+ nuraft::ptr<nuraft::log_entry> src = nullptr;
+
+ if (search == logs_.end()) {
+ src = logs_.at(0); // dummy entry
+ } else {
+ src = search->second;
}
- return make_clone(entry->second);
+ return make_clone(src);
}
uint64_t
@@ -155,11 +159,13 @@ STEKShareLogStore::entry_at(uint64_t index)
nuraft::ptr<nuraft::log_entry> src = nullptr;
{
std::lock_guard<std::mutex> l(logs_lock_);
- auto entry = logs_.find(index);
- if (entry == logs_.end()) {
- entry = logs_.find(0);
+ auto search = logs_.find(index);
+
+ if (search == logs_.end()) {
+ src = logs_.at(0); // dummy entry;
+ } else {
+ src = search->second;
}
- src = entry->second;
}
return make_clone(src);
}
@@ -169,12 +175,17 @@ STEKShareLogStore::term_at(uint64_t index)
{
uint64_t term = 0;
{
- std::lock_guard<std::mutex> l(logs_lock_);
- auto entry = logs_.find(index);
- if (entry == logs_.end()) {
- entry = logs_.find(0);
+ std::lock_guard<std::mutex> l(logs_lock_);
+ auto search = logs_.find(index);
+ nuraft::ptr<nuraft::log_entry> src = nullptr;
+
+ if (search == logs_.end()) {
+ src = logs_.at(0); // dummy entry;
+ } else {
+ src = search->second;
}
- term = entry->second->get_term();
+
+ term = src->get_term();
}
return term;
}