[libvirt] [PATCHv2] virsh: fix no error when pass a count <= 0 to setvcpus

Luyao Huang lhuang at redhat.com
Thu Oct 22 03:27:35 UTC 2015


https://bugzilla.redhat.com/show_bug.cgi?id=1248277

When count <= 0, the client exit without set an error.

Signed-off-by: Luyao Huang <lhuang at redhat.com>
---
v2:
- use vshCommandOptUInt to forbid negative number,
  and check if count is zero. (thanks Peter and Andrea)

 tools/virsh-domain.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index 4191548..3f032f4 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -6873,7 +6873,7 @@ static bool
 cmdSetvcpus(vshControl *ctl, const vshCmd *cmd)
 {
     virDomainPtr dom;
-    int count = 0;
+    unsigned int count = 0;
     bool ret = false;
     bool maximum = vshCommandOptBool(cmd, "maximum");
     bool config = vshCommandOptBool(cmd, "config");
@@ -6900,9 +6900,14 @@ cmdSetvcpus(vshControl *ctl, const vshCmd *cmd)
     if (!(dom = virshCommandOptDomain(ctl, cmd, NULL)))
         return false;
 
-    if (vshCommandOptInt(ctl, cmd, "count", &count) < 0 || count <= 0)
+    if (vshCommandOptUInt(ctl, cmd, "count", &count) < 0)
         goto cleanup;
 
+    if (count == 0) {
+        vshError(ctl, _("Can't set 0 processors for a VM"));
+        goto cleanup;
+    }
+
     /* none of the options were specified */
     if (!current && flags == 0) {
         if (virDomainSetVcpus(dom, count) != 0)
-- 
1.8.3.1




More information about the libvir-list mailing list