[libvirt] [PATCH v3] Fix URI alias prefix matching

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> --- src/libvirt.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) diff --git a/src/libvirt.c b/src/libvirt.c index e9d1a29..6f8a76f 100644 --- a/src/libvirt.c +++ b/src/libvirt.c @@ -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))) { -- 1.7.4.1

On Tue, Nov 01, 2011 at 05:49:06PM +0800, Wen Ruo Lv wrote:
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> --- src/libvirt.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/src/libvirt.c b/src/libvirt.c index e9d1a29..6f8a76f 100644 --- a/src/libvirt.c +++ b/src/libvirt.c @@ -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))) {
ACK Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

On 11/01/2011 05:11 AM, Daniel P. Berrange wrote:
On Tue, Nov 01, 2011 at 05:49:06PM +0800, Wen Ruo Lv wrote:
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>
ACK
Pushed, after converting your TABs to space ('make syntax-check' caught that), and adding you to AUTHORS (let me know if I need to update your preferred spelling; I went by your sign-off line). -- Eric Blake eblake@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org
participants (3)
-
Daniel P. Berrange
-
Eric Blake
-
Wen Ruo Lv