]> xenbits.xensource.com Git - libvirt.git/commitdiff
rpc: Check client limits in more places
authorMartin Kletzander <mkletzan@redhat.com>
Mon, 2 Jan 2023 15:23:08 +0000 (16:23 +0100)
committerMartin Kletzander <mkletzan@redhat.com>
Mon, 2 Jan 2023 19:39:10 +0000 (20:39 +0100)
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2033879
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/rpc/virnetserver.c

index 2ec4b9a6c94726e7f60fd789301cb5fba303b07a..bf0fda04ee8957ffcc9e5e38b1078dbf81c9a384 100644 (file)
@@ -370,6 +370,13 @@ virNetServerNew(const char *name,
     g_autoptr(virNetServer) srv = NULL;
     g_autofree char *jobName = g_strdup_printf("rpc-%s", name);
 
+    if (max_clients < max_anonymous_clients) {
+        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+                       _("The overall maximum number of clients must not be less "
+                         "than the number of clients waiting for authentication"));
+        return NULL;
+    }
+
     if (virNetServerInitialize() < 0)
         return NULL;
 
@@ -449,6 +456,12 @@ virNetServerNewPostExecRestart(virJSONValue *object,
                            _("Malformed max_anonymous_clients data in JSON document"));
             return NULL;
         }
+        if (max_clients < max_anonymous_clients) {
+            virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+                           _("The overall maximum number of clients must not be less "
+                             "than the number of clients waiting for authentication"));
+            return NULL;
+        }
     } else {
         max_anonymous_clients = max_clients;
     }