[libvirt] [PATCH] virsh: fixed domdisplay command
Doug Goldstein
cardoe at gentoo.org
Mon Jul 23 19:25:23 UTC 2012
On Mon, Jul 23, 2012 at 1:51 PM, Martin Kletzander <mkletzan at redhat.com> wrote:
> The 'domdisplay' command didn't properly evaluate '--include-password'
> option.
> ---
> tools/virsh.c | 35 +++++++++++++++++++++++------------
> 1 files changed, 23 insertions(+), 12 deletions(-)
>
> diff --git a/tools/virsh.c b/tools/virsh.c
> index 5888d6c..e0765ba 100644
> --- a/tools/virsh.c
> +++ b/tools/virsh.c
> @@ -66,6 +66,7 @@
> #include "virtypedparam.h"
> #include "intprops.h"
> #include "conf/virdomainlist.h"
> +#include "datatypes.h"
Why exactly is this necessary? No new types are being used that aren't
used throughout this whole file.
>
> static char *progname;
>
> @@ -13882,7 +13883,16 @@ cmdDomDisplay(vshControl *ctl, const vshCmd *cmd)
> goto cleanup;
> }
>
> - doc = virDomainGetXMLDesc(dom, 0);
> + if (!vshCommandOptBool(cmd, "include-password"))
> + doc = virDomainGetXMLDesc(dom, 0);
> + else {
> + if (ctl->conn->flags & VIR_DOMAIN_XML_SECURE) {
> + vshError(ctl, _("Cannot get password with read-only connection"));
> + goto cleanup;
> + }
> + doc = virDomainGetXMLDesc(dom, VIR_DOMAIN_XML_SECURE);
> + }
> +
I would do like all the other commands and define unsigned int flags =
0; at the top and if include-password is set just do flags |=
VIR_DOMAIN_XML_SECURE; and always call virDomainGetXMLDesc() with
flags passed. Look at cmdSnapshotCurrent for an example.
> if (!doc)
> goto cleanup;
>
> @@ -13944,19 +13954,20 @@ cmdDomDisplay(vshControl *ctl, const vshCmd *cmd)
> if (tmp)
> tls_port = 0;
>
> - if (vshCommandOptBool(cmd, "daemon")) {
> - /* Create our XPATH lookup for the SPICE password */
> - virAsprintf(&xpath, "string(/domain/devices/graphics"
> + /* Create our XPATH lookup for the SPICE password */
> + virAsprintf(&xpath, "string(/domain/devices/graphics"
> "[@type='%s']/@passwd)", scheme[iter]);
> - if (!xpath) {
> - virReportOOMError();
> - goto cleanup;
> - }
> -
> - /* Attempt to get the SPICE password */
> - passwd = virXPathString(xpath, ctxt);
> - VIR_FREE(xpath);
> + if (!xpath) {
> + virReportOOMError();
> + goto cleanup;
> }
> +
> + /* Attempt to get the SPICE password
> + *
> + * This will return NULL automatically if the
> + * virDomainGetXMLDesc wasn't secure */
> + passwd = virXPathString(xpath, ctxt);
> + VIR_FREE(xpath);
> }
>
> /* Build up the full URI, starting with the scheme */
> --
> 1.7.8.6
>
Getting rid of the conditional on include-password (which was
incorrectly stated as 'daemon') doesn't seem correct. Leave the logic
as is and just fix 'daemon' to say 'include-password'.
--
Doug Goldstein
More information about the libvir-list
mailing list