Hi Rich
Thank you for a reviewing and improvement.
It looks good to me.
I want to commit this one if we're all happy with it ...?
If this patch is applied, our team member become happy.
Thanks
Masayuki Sunou
In message <4676B0BD.4030307(a)redhat.com>
"Re: [Libvir] [PATCH] Fix the check of <cpumap> in virsh vcpupin"
""Richard W.M. Jones" <rjones(a)redhat.com>" wrote:
> Richard W.M. Jones wrote:
> > Index: src/virsh.c
> > ===================================================================
> > RCS file: /data/cvs/libvirt/src/virsh.c,v
> > retrieving revision 1.85
> > diff -u -r1.85 virsh.c
> > --- src/virsh.c 18 Jun 2007 08:33:08 -0000 1.85
> > +++ src/virsh.c 18 Jun 2007 11:00:59 -0000
> > @@ -1505,7 +1505,7 @@
> > * "vcpupin" command
> > */
> > static vshCmdInfo info_vcpupin[] = {
> > - {"syntax", "vcpupin <domain>"},
> > + {"syntax", "vcpupin <domain> <vcpu>
<cpulist>"},
> > {"help", gettext_noop("control domain vcpu
affinity")},
> > {"desc", gettext_noop("Pin domain VCPUs to host physical
CPUs.")},
> > {NULL, NULL}
> > @@ -1530,6 +1530,8 @@
> > int vcpufound = 0;
> > unsigned char *cpumap;
> > int cpumaplen;
> > + int i;
> > + enum { expect_num, expect_num_or_comma } state;
> >
> > if (!vshConnectionUsability(ctl, ctl->conn, TRUE))
> > return FALSE;
> > @@ -1563,6 +1565,42 @@
> > return FALSE;
> > }
> >
> > + /* Check that the cpulist parameter is a comma-separated list of
> > + * numbers and give an intelligent error message if not.
> > + */
> > + if (cpulist[0] == '\0') {
> > + vshError(ctl, FALSE, _("cpulist: Invalid format. Empty
string."));
> > + virDomainFree (dom);
> > + return FALSE;
> > + }
> > +
> > + state = expect_num;
> > + for (i = 0; cpulist[i]; i++) {
> > + switch (state) {
> > + case expect_num:
> > + if (!isdigit (cpulist[i])) {
> > + vshError( ctl, FALSE, _("cpulist: %s: Invalid format.
Expecting digit at position %d (near '%c')."), cpulist, i, cpulist[i]);
> > + virDomainFree (dom);
> > + return FALSE;
> > + }
> > + state = expect_num_or_comma;
> > + break;
> > + case expect_num_or_comma:
> > + if (cpulist[i] == ',')
> > + state = expect_num;
> > + else if (!isdigit (cpulist[i])) {
> > + vshError(ctl, FALSE, _("cpulist: %s: Invalid format.
Expecting digit or comma at position %d (near '%c')."), cpulist, i,
cpulist[i]);
> > + virDomainFree (dom);
> > + return FALSE;
> > + }
> > + }
> > + }
> > + if (state == expect_num) {
> > + vshError(ctl, FALSE, _("cpulist: %s: Invalid format. Trailing
comma at position %d."), cpulist, i);
> > + virDomainFree (dom);
> > + return FALSE;
> > + }
> > +
> > cpumaplen = VIR_CPU_MAPLEN(VIR_NODEINFO_MAXCPUS(nodeinfo));
> > cpumap = vshCalloc(ctl, 1, cpumaplen);
>
I want to commit this one if we're all happy with it ...?
> Rich.
>
> --
> Emerging Technologies, Red Hat -
http://et.redhat.com/~rjones/
> Registered Address: Red Hat UK Ltd, Amberley Place, 107-111 Peascod
> Street, Windsor, Berkshire, SL4 1TE, United Kingdom. Registered in
> England and Wales under Company Registration No. 03798903
>