From patchwork Sun Dec 28 17:17:43 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Barth X-Patchwork-Id: 424333 X-Patchwork-Delegate: pablo@netfilter.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 5C9CA1400DE for ; Mon, 29 Dec 2014 04:46:23 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751704AbaL1RqX (ORCPT ); Sun, 28 Dec 2014 12:46:23 -0500 Received: from mail.core-networks.de ([82.96.72.7]:42981 "EHLO mail.core-networks.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751654AbaL1RqW (ORCPT ); Sun, 28 Dec 2014 12:46:22 -0500 Received: from localhost ([127.0.0.1]) by mail.core-networks.de id 1Y5HTt-000572-F6 with ESMTPSA (TLSv1.2:DHE-RSA-AES256-GCM-SHA384:256) for ; Sun, 28 Dec 2014 18:18:17 +0100 Received: from localhost.localdomain (p54B7BD3C.dip0.t-ipconnect.de [84.183.189.60]) by lan.midlink.org (Postfix) with ESMTPSA id 5CBEC7FC8A; Sun, 28 Dec 2014 18:19:07 +0100 (CET) From: Steven Barth To: netfilter-devel@vger.kernel.org Cc: Steven Barth Subject: [PATCH 3/5] erec: use stdio vasprintf instead of gmp_vasprintf Date: Sun, 28 Dec 2014 18:17:43 +0100 Message-Id: <1419787065-26146-4-git-send-email-cyrus@openwrt.org> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1419787065-26146-1-git-send-email-cyrus@openwrt.org> References: <1419787065-26146-1-git-send-email-cyrus@openwrt.org> Sender: netfilter-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netfilter-devel@vger.kernel.org Use stdio's vasprintf instead of gmp_vasprintf which is not part of the mini-gmp function subset. Furthermore convert the only gmp-specific user and allow the compiler to verify format-strings. Signed-off-by: Steven Barth --- src/erec.c | 6 +++++- src/evaluate.c | 8 ++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/erec.c b/src/erec.c index 82543e6..810e9bf 100644 --- a/src/erec.c +++ b/src/erec.c @@ -44,6 +44,7 @@ static void erec_destroy(struct error_record *erec) xfree(erec); } +__attribute__((format(printf, 3, 0))) struct error_record *erec_vcreate(enum error_record_types type, const struct location *loc, const char *fmt, va_list ap) @@ -55,10 +56,13 @@ struct error_record *erec_vcreate(enum error_record_types type, erec->num_locations = 0; erec_add_location(erec, loc); - gmp_vasprintf(&erec->msg, fmt, ap); + if (vasprintf(&erec->msg, fmt, ap) < 0) + erec->msg = NULL; + return erec; } +__attribute__((format(printf, 3, 4))) struct error_record *erec_create(enum error_record_types type, const struct location *loc, const char *fmt, ...) diff --git a/src/evaluate.c b/src/evaluate.c index 8f0acf7..593cc33 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -232,9 +232,13 @@ static int expr_evaluate_value(struct eval_ctx *ctx, struct expr **expr) case TYPE_INTEGER: mpz_init_bitmask(mask, ctx->ectx.len); if (mpz_cmp((*expr)->value, mask) > 0) { + char *valstr = mpz_get_str(NULL, 10, (*expr)->value); + char *rangestr = mpz_get_str(NULL, 10, mask); expr_error(ctx->msgs, *expr, - "Value %Zu exceeds valid range 0-%Zu", - (*expr)->value, mask); + "Value %s exceeds valid range 0-%s", + valstr, rangestr); + free(valstr); + free(rangestr); mpz_clear(mask); return -1; }