On 07/08/10 - 11:39:07AM, Chris Lalancette wrote:
> The virsh command "setmem" takes as input a number that
> should represent an unsigned long number of kilobytes. Fix
> cmdSetmem to properly parse this as an unsigned long instead
> of an int.
ping, any reviews here?
> Signed-off-by: Chris Lalancette<clalance(a)redhat.com>
> ---
> tools/virsh.c | 30 ++++++++++++++++++++++++++----
> 1 files changed, 26 insertions(+), 4 deletions(-)
>
> diff --git a/tools/virsh.c b/tools/virsh.c
> index 551e97b..63816dc 100644
> --- a/tools/virsh.c
> +++ b/tools/virsh.c
> @@ -223,6 +223,8 @@ static int vshCmddefHelp(vshControl *ctl, const char *name);
>
> static vshCmdOpt *vshCommandOpt(const vshCmd *cmd, const char *name);
> static int vshCommandOptInt(const vshCmd *cmd, const char *name, int *found);
> +static unsigned long vshCommandOptUL(const vshCmd *cmd, const char *name,
> + int *found);
> static char *vshCommandOptString(const vshCmd *cmd, const char *name,
> int *found);
> static long long vshCommandOptLongLong(const vshCmd *cmd, const char *name,
> @@ -2534,7 +2536,7 @@ cmdSetmem(vshControl *ctl, const vshCmd *cmd)
> {
> virDomainPtr dom;
> virDomainInfo info;
> - int kilobytes;
> + unsigned long kilobytes;
> int ret = TRUE;
>
> if (!vshConnectionUsability(ctl, ctl->conn))
> @@ -2543,10 +2545,10 @@ cmdSetmem(vshControl *ctl, const vshCmd *cmd)
> if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
> return FALSE;
>
> - kilobytes = vshCommandOptInt(cmd, "kilobytes",&kilobytes);
> + kilobytes = vshCommandOptUL(cmd, "kilobytes", NULL);
> if (kilobytes<= 0) {
> virDomainFree(dom);
> - vshError(ctl, _("Invalid value of %d for memory size"),
kilobytes);
> + vshError(ctl, _("Invalid value of %lu for memory size"),
kilobytes);
> return FALSE;
> }
>
> @@ -2558,7 +2560,7 @@ cmdSetmem(vshControl *ctl, const vshCmd *cmd)
>
> if (kilobytes> info.maxMem) {
> virDomainFree(dom);
> - vshError(ctl, _("Requested memory size %d kb is larger than maximum of
%lu kb"),
> + vshError(ctl, _("Requested memory size %lu kb is larger than maximum of
%lu kb"),
> kilobytes, info.maxMem);
> return FALSE;
> }
> @@ -9628,6 +9630,26 @@ vshCommandOptInt(const vshCmd *cmd, const char *name, int
*found)
> return res;
> }
>
> +static unsigned long
> +vshCommandOptUL(const vshCmd *cmd, const char *name, int *found)
> +{
> + vshCmdOpt *arg = vshCommandOpt(cmd, name);
> + unsigned long res = 0;
> + int num_found = FALSE;
> + char *end_p = NULL;
> +
> + if ((arg != NULL)&& (arg->data != NULL)) {
> + res = strtoul(arg->data,&end_p, 10);
> + if ((arg->data == end_p) || (*end_p!= 0))
> + num_found = FALSE;
> + else
> + num_found = TRUE;
> + }
> + if (found)
> + *found = num_found;
> + return res;
> +}
> +
> /*
> * Returns option as STRING
> */
> --
> 1.7.1.1
>
> --
> libvir-list mailing list
> libvir-list(a)redhat.com
>
https://www.redhat.com/mailman/listinfo/libvir-list