]> xenbits.xensource.com Git - libvirt.git/commitdiff
Fix URI alias prefix matching
authorWen Ruo Lv <lvroyce@linux.vnet.ibm.com>
Tue, 1 Nov 2011 09:49:06 +0000 (17:49 +0800)
committerEric Blake <eblake@redhat.com>
Tue, 1 Nov 2011 16:47:35 +0000 (10:47 -0600)
with /etc/libvirt/libvirt.conf below:
uri_aliases = [
  "hail=qemu:///system",
  "sleet=qemu+ssh://root 9 115 122 57/system",
  "sam=qemu+unix:///system?socket=/var/run/libvirt/libvirt-sock",
]
Neither "virsh -c hailly" nor "hai" should result in matching "hail=qemu:///system"

Fix URI alias prefix matching when connecting

Signed-off-by: Wen Ruo Lv <lvroyce@linux.vnet.ibm.com>
AUTHORS
src/libvirt.c

diff --git a/AUTHORS b/AUTHORS
index 1040117c092d63eeb59ad99c071f5e760a270e8e..5bd49b332f5ec715a81dbf68f5d35216548b04a9 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -201,6 +201,7 @@ Patches have also been contributed by:
   David L Stevens      <dlstevens@us.ibm.com>
   Tyler Coumbes        <coumbes@gmail.com>
   Josh Durgin          <josh.durgin@dreamhost.com>
+  Wen Ruo Lv           <lvroyce@linux.vnet.ibm.com>
 
   [....send patches to get your name here....]
 
index e9d1a299f2bad0fea109b20c19cffdbc792b594d..f7ff98d36a5d852bbf472f7031ec981fb287bcae 100644 (file)
@@ -990,6 +990,8 @@ static int
 virConnectOpenFindURIAliasMatch(virConfValuePtr value, const char *alias, char **uri)
 {
     virConfValuePtr entry;
+    size_t alias_len;
+
     if (value->type != VIR_CONF_LIST) {
         virLibConnError(VIR_ERR_INTERNAL_ERROR, "%s",
                         _("Expected a list for 'uri_aliases' config parameter"));
@@ -997,6 +999,7 @@ virConnectOpenFindURIAliasMatch(virConfValuePtr value, const char *alias, char *
     }
 
     entry = value->list;
+    alias_len = strlen(alias);
     while (entry) {
         char *offset;
         size_t safe;
@@ -1022,7 +1025,8 @@ virConnectOpenFindURIAliasMatch(virConfValuePtr value, const char *alias, char *
             return -1;
         }
 
-        if (STREQLEN(entry->str, alias, offset-entry->str)) {
+        if (alias_len == (offset - entry->str) &&
+            STREQLEN(entry->str, alias, alias_len)) {
             VIR_DEBUG("Resolved alias '%s' to '%s'",
                       alias, offset+1);
             if (!(*uri = strdup(offset+1))) {