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@xxxxxxxxxx> > --- > 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@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/libvir-list -- -- Chris Lalancette -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list