From a669cd642251bacfcfd6188e72404fd824c80b73 Mon Sep 17 00:00:00 2001 From: Rishabh Dave Date: Thu, 28 Sep 2023 23:04:51 +0530 Subject: [PATCH] mon/AuthMonitor: check if entity is absent before creating it Although this code path is not used for creating entities yet, it is better to fix the bug sooner than later. Method AuthMonitor::_update_or_create_entity() must exit (with appropriate error code) when entity to be created on the Ceph cluster is already present. Signed-off-by: Rishabh Dave --- src/mon/AuthMonitor.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/mon/AuthMonitor.cc b/src/mon/AuthMonitor.cc index 1aac226e149..35300015cae 100644 --- a/src/mon/AuthMonitor.cc +++ b/src/mon/AuthMonitor.cc @@ -1984,6 +1984,14 @@ int AuthMonitor::_update_or_create_entity(const EntityName& entity, KeyServerData::Incremental auth_inc; auth_inc.name = entity; + // if entity to be created is already present. + if (create_entity && + mon.key_server.get_auth(auth_inc.name, auth_inc.auth)) { + ss << "entity already exists" << auth_inc.name; + return -EEXIST; + } + + // if entity to be updated is absent. if (!create_entity && !mon.key_server.get_auth(auth_inc.name, auth_inc.auth)) { ss << "couldn't find entry " << auth_inc.name; -- 2.39.5