From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:46968) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ScIeD-0000kO-UZ for qemu-devel@nongnu.org; Wed, 06 Jun 2012 11:59:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ScIeC-0003hN-5K for qemu-devel@nongnu.org; Wed, 06 Jun 2012 11:59:49 -0400 Received: from mx1.redhat.com ([209.132.183.28]:31843) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ScIeB-0003hE-TY for qemu-devel@nongnu.org; Wed, 06 Jun 2012 11:59:48 -0400 From: Laszlo Ersek Date: Wed, 6 Jun 2012 18:00:27 +0200 Message-Id: <1338998427-13253-1-git-send-email-lersek@redhat.com> Subject: [Qemu-devel] [PATCH qom-next] qapi: exclude negative values in uint*_t Visitor interfaces List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: afaerber@suse.de, mdroth@linux.vnet.ibm.com, pbonzini@redhat.com, qemu-devel@nongnu.org, lersek@redhat.com Signed-off-by: Laszlo Ersek --- (To be applied on top of 0f2de4a8.) qapi/qapi-visit-core.c | 11 ++++++++--- 1 files changed, 8 insertions(+), 3 deletions(-) diff --git a/qapi/qapi-visit-core.c b/qapi/qapi-visit-core.c index 9a29674..81f697f 100644 --- a/qapi/qapi-visit-core.c +++ b/qapi/qapi-visit-core.c @@ -106,7 +106,7 @@ void visit_type_uint8(Visitor *v, uint8_t *obj, const char *name, Error **errp) } else { value = *obj; v->type_int(v, &value, name, errp); - if (value > UINT8_MAX) { + if (value < 0 || value > UINT8_MAX) { error_set(errp, QERR_INVALID_PARAMETER_VALUE, name ? name : "null", "uint8_t"); return; @@ -125,7 +125,7 @@ void visit_type_uint16(Visitor *v, uint16_t *obj, const char *name, Error **errp } else { value = *obj; v->type_int(v, &value, name, errp); - if (value > UINT16_MAX) { + if (value < 0 || value > UINT16_MAX) { error_set(errp, QERR_INVALID_PARAMETER_VALUE, name ? name : "null", "uint16_t"); return; @@ -144,7 +144,7 @@ void visit_type_uint32(Visitor *v, uint32_t *obj, const char *name, Error **errp } else { value = *obj; v->type_int(v, &value, name, errp); - if (value > UINT32_MAX) { + if (value < 0 || value > UINT32_MAX) { error_set(errp, QERR_INVALID_PARAMETER_VALUE, name ? name : "null", "uint32_t"); return; @@ -163,6 +163,11 @@ void visit_type_uint64(Visitor *v, uint64_t *obj, const char *name, Error **errp } else { value = *obj; v->type_int(v, &value, name, errp); + if (value < 0) { + error_set(errp, QERR_INVALID_PARAMETER_VALUE, name ? name : "null", + "uint64_t"); + return; + } *obj = value; } } -- 1.7.1