[PATCH] Check a value in vshCommandOptInt()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi

When the option which should set a number is set a character
which is not a number, the value is changed into 0 in libvirt.
It causes the movement not expected.

ex)
 # virsh vcpupin dom_name A 0,1
  => VCPU0 is pinned without the command becoming the error.

This patch fixes it by checking the value in vshCommandOptInt().

Signed-off-by: Masayuki Sunou <fj1826dm@xxxxxxxxxxxxxxxxx>

Thanks,
Masayuki Sunou.

----------------------------------------------------------------------
Index: src/virsh.c
===================================================================
RCS file: /data/cvs/libvirt/src/virsh.c,v
retrieving revision 1.95
diff -u -p -r1.95 virsh.c
--- src/virsh.c	14 Aug 2007 07:07:57 -0000	1.95
+++ src/virsh.c	16 Aug 2007 07:13:46 -0000
@@ -3699,12 +3699,16 @@ static int
 vshCommandOptInt(vshCmd * cmd, const char *name, int *found)
 {
     vshCmdOpt *arg = vshCommandOpt(cmd, name);
-    int res = 0;
+    int res = 0, num_found = TRUE;
+    char *end_p=NULL;
 
     if (arg)
-        res = atoi(arg->data);
+        res = strtol(arg->data, &end_p, 10);
+        if (arg->data == end_p) {
+            num_found = FALSE;
+        }
     if (found)
-        *found = arg ? TRUE : FALSE;
+        *found = (arg && num_found) ? TRUE : FALSE;
     return res;
 }
 
----------------------------------------------------------------------

--
Libvir-list mailing list
Libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list

[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]