On 11/12/2010 09:22 AM, Daniel P. Berrange wrote:
The "find-storage-pool-sources-as" command takes two
arguments,
a hostname and a port number. For some reason the code would
also then look for a port number appended to the hostname
string by searching for ':'. This totally breaks if the user
gives an IPv6 address, and is redundant, since you can already
provide a port as a separate argument
* tools/virsh.c: Remove bogus port number handling code
---
tools/virsh.c | 11 ++---------
1 files changed, 2 insertions(+), 9 deletions(-)
diff --git a/tools/virsh.c b/tools/virsh.c
index 69a42e8..a840758 100644
--- a/tools/virsh.c
+++ b/tools/virsh.c
@@ -5772,15 +5772,8 @@ cmdPoolDiscoverSourcesAs(vshControl * ctl, const vshCmd * cmd
ATTRIBUTE_UNUSED)
if (host) {
size_t hostlen = strlen(host);
char *port = vshCommandOptString(cmd, "port", &found);
- if (!found) {
- port = strrchr(host, ':');
- if (port) {
- if (*(++port))
- hostlen = port - host - 1;
- else
- port = NULL;
- }
- }
+ if (!found)
+ port = NULL;
Slight change which may break existing scripts that used an undocumented
method, but makes sense given that the documentation calls out both
arguments, and in light of IPv6 hostnames.
virBuffer buf = VIR_BUFFER_INITIALIZER;
virBufferAddLit(&buf, "<source>\n");
virBufferVSprintf(&buf, " <host
name='%.*s'",(int)hostlen, host);
However, given that we are no longer computing hostlen as anything other
than strlen(host), I would recommend that you respin this patch to
completely get rid of hostlen, and use %s instead of %.*s.
--
Eric Blake eblake(a)redhat.com +1-801-349-2682
Libvirt virtualization library
http://libvirt.org