]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
common/keyring: Fix reset error checking
authorMarcel Lauhoff <marcel.lauhoff@clyso.com>
Tue, 3 Mar 2026 20:25:05 +0000 (21:25 +0100)
committerMarcel Lauhoff <marcel.lauhoff@clyso.com>
Mon, 1 Jun 2026 17:04:12 +0000 (19:04 +0200)
Signed-off-by: Marcel Lauhoff <marcel.lauhoff@clyso.com>
On-behalf-of: SAP marcel.lauhoff@sap.com

src/common/keyring.cc
src/common/keyring.h
src/test/common/test_keyring.cc

index b6823753efb8ffd97bc844c3c6300d163937ca11..a14c49534ba8b02e57c4d51c0c1501749c9d5d05 100644 (file)
@@ -134,7 +134,7 @@ void LinuxKeyringSecret::initialize_process_keyring() noexcept {
   if (_serial == -1) {
     return {-EINVAL, std::generic_category()};
   }
-  if (const auto ret = remove(); !ret) {
+  if (const auto ret = remove(); ret) {
     return ret;
   }
   _serial = -1;
index 48e1ee59a99cefe9df3293962c10b76ee7d7f9e5..6d7478adbaea2c419dbb5da30ac81e5d39d09fc4 100644 (file)
@@ -121,6 +121,7 @@ class LinuxKeyringSecret : public KeyringSecret {
     return os << "LinuxKeyringSecret{" << secret._serial << "}";
   }
   friend class LinuxKeyringTest_LifecycleMoveAssignResetsDestination_Test;
+  friend class LinuxKeyringTest_ResetClearsState_Test;
   friend class LinuxKeyring;
 };
 
index 1c591c5146737b9871e4532313792cf52611d0b4..0eeb69be8999abb528ef3f7ea34f29001d3d9fbd 100644 (file)
@@ -68,4 +68,16 @@ TEST_F(LinuxKeyringTest, LifecycleMoveAssignResetsDestination) {
   ASSERT_EQ(ENOKEY, errno);
 }
 
+TEST_F(LinuxKeyringTest, ResetClearsState) {
+  auto maybe = keyring->add("testkey", "secret");
+  auto* ptr = dynamic_cast<LinuxKeyringSecret*>(maybe.value().get());
+  auto err = ptr->reset();
+  ASSERT_FALSE(err) << err;
+  ASSERT_FALSE(ptr->initialized());
+  ASSERT_EQ(-1, ptr->_serial);
+
+  err = ptr->reset();
+  ASSERT_TRUE(err);
+}
+
 }  // namespace ceph