]> xenbits.xensource.com Git - libvirt.git/commitdiff
remote: Forbid default "/session" connections when using ssh transport
authorPeter Krempa <pkrempa@redhat.com>
Mon, 10 Jun 2013 12:41:22 +0000 (14:41 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 14 Jun 2013 06:04:40 +0000 (08:04 +0200)
Without the socket path explicitly specified, the remote driver tried to
connect to the "/system" instance socket even if "/session" was
specified in the uri. With this patch this configuration now produces an
error.

It is still possible to initiate a session connection with specifying
the path to the socket manually and also manually starting the session
daemon. This was also possible prior to this patch,

This is a minimal fix. We may decide to support remote session
connections using ssh but this will require changes to the remote driver
code so this fix shouldn't cause regressions in the case we decide to do
that.

src/remote/remote_driver.c

index fcf45d318ad48b808916323ac6bff9c9e937a9f2..bd5646adcd3388b0a969f20895282cb3ffe5d5d5 100644 (file)
@@ -631,11 +631,21 @@ doRemoteOpen(virConnectPtr conn,
         break;
 
     case trans_libssh2:
-        if (!sockname &&
-            VIR_STRDUP(sockname,
-                       flags & VIR_DRV_OPEN_REMOTE_RO ?
-                       LIBVIRTD_PRIV_UNIX_SOCKET_RO : LIBVIRTD_PRIV_UNIX_SOCKET) < 0)
-            goto failed;
+        if (!sockname) {
+            /* Right now we don't support default session connections */
+            if (STREQ(conn->uri->path, "/session")) {
+                virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+                               _("Connecting to session instance without "
+                                 "socket path is not supported by the libssh2 "
+                                 "connection driver"));
+                goto failed;
+            }
+
+            if (VIR_STRDUP(sockname,
+                           flags & VIR_DRV_OPEN_REMOTE_RO ?
+                           LIBVIRTD_PRIV_UNIX_SOCKET_RO : LIBVIRTD_PRIV_UNIX_SOCKET) < 0)
+                goto failed;
+        }
 
         VIR_DEBUG("Starting LibSSH2 session");
 
@@ -698,11 +708,21 @@ doRemoteOpen(virConnectPtr conn,
         if (!command && VIR_STRDUP(command, "ssh") < 0)
             goto failed;
 
-        if (!sockname &&
-            VIR_STRDUP(sockname,
-                       flags & VIR_DRV_OPEN_REMOTE_RO ?
-                       LIBVIRTD_PRIV_UNIX_SOCKET_RO : LIBVIRTD_PRIV_UNIX_SOCKET) < 0)
-            goto failed;
+        if (!sockname) {
+            /* Right now we don't support default session connections */
+            if (STREQ(conn->uri->path, "/session")) {
+                virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+                               _("Connecting to session instance without "
+                                 "socket path is not supported by the ssh "
+                                 "connection driver"));
+                goto failed;
+            }
+
+            if (VIR_STRDUP(sockname,
+                           flags & VIR_DRV_OPEN_REMOTE_RO ?
+                           LIBVIRTD_PRIV_UNIX_SOCKET_RO : LIBVIRTD_PRIV_UNIX_SOCKET) < 0)
+                goto failed;
+        }
 
         if (!(priv->client = virNetClientNewSSH(priv->hostname,
                                                 port,