From 5fc4abe57b7fee54651ab20aa8f81a132c688c60 Mon Sep 17 00:00:00 2001 From: Matthias Goebel Date: Fri, 3 May 2024 10:55:35 +0200 Subject: [PATCH] Added missing check for replay protection pointer before allocating new variable Problem: If a key with write-once flag is being set in a SecureStore without rollback-protection store (i.e. _rbp_kv == NULL), additional memory will be allocated for the variable _ih->key. The memory will not be deleted, though, as the delete in line 434 only happens if a rollback-protection store exists (i.e. _rbp_kv != NULL) Solution: Only allocate the memory if _rbp_kv != NULL Contribution is provided on behalf of BIOTRONIK. --- storage/kvstore/securestore/source/SecureStore.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/storage/kvstore/securestore/source/SecureStore.cpp b/storage/kvstore/securestore/source/SecureStore.cpp index be14c105f09..fc2d2d5de38 100644 --- a/storage/kvstore/securestore/source/SecureStore.cpp +++ b/storage/kvstore/securestore/source/SecureStore.cpp @@ -290,7 +290,7 @@ int SecureStore::set_start(set_handle_t *handle, const char *key, size_t final_d goto fail; } - if (create_flags & (REQUIRE_REPLAY_PROTECTION_FLAG | WRITE_ONCE_FLAG)) { + if (_rbp_kv && (create_flags & (REQUIRE_REPLAY_PROTECTION_FLAG | WRITE_ONCE_FLAG))) { _ih->key = new char[strlen(key) + 1]; strcpy(_ih->key, key); }