]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/AuthMonitor: check if entity is absent before creating it 53405/head
authorRishabh Dave <ridave@redhat.com>
Thu, 28 Sep 2023 17:34:51 +0000 (23:04 +0530)
committerRishabh Dave <ridave@redhat.com>
Fri, 6 Oct 2023 08:52:14 +0000 (14:22 +0530)
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 <ridave@redhat.com>
src/mon/AuthMonitor.cc

index 1aac226e149df2961ffe38e130dd3b66a15c6591..35300015cae5a3b85086cc263629cf4088979f36 100644 (file)
@@ -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;