qapi: treat all negative return of strtosz_suffix() as error
authorAmos Kong <akong@redhat.com>
Mon, 28 Apr 2014 05:53:49 +0000 (13:53 +0800)
committerLuiz Capitulino <lcapitulino@redhat.com>
Thu, 8 May 2014 18:19:58 +0000 (14:19 -0400)
strtosz_suffix() might return negative error, this patch fixes
the error handling.

This patch also changes to handle error in the if statement
rather than handle success specially, this will make this use
of strtosz_suffix consistent with all other uses.

Signed-off-by: Amos Kong <akong@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
qapi/opts-visitor.c

index 5d830a2b56d70e1a8fddf0f4aa9ecb75331941be..87c1c789c94d204dd4403829d0b4ec63a9779189 100644 (file)
@@ -472,13 +472,14 @@ opts_type_size(Visitor *v, uint64_t *obj, const char *name, Error **errp)
 
     val = strtosz_suffix(opt->str ? opt->str : "", &endptr,
                          STRTOSZ_DEFSUFFIX_B);
-    if (val != -1 && *endptr == '\0') {
-        *obj = val;
-        processed(ov, name);
+    if (val < 0 || *endptr) {
+        error_set(errp, QERR_INVALID_PARAMETER_VALUE, opt->name,
+                  "a size value representible as a non-negative int64");
         return;
     }
-    error_set(errp, QERR_INVALID_PARAMETER_VALUE, opt->name,
-              "a size value representible as a non-negative int64");
+
+    *obj = val;
+    processed(ov, name);
 }