[PATCH 3/5] erec: use stdio vasprintf instead of gmp_vasprintf

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

 



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 <cyrus@xxxxxxxxxxx>
---
 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;
 		}
-- 
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Netfitler Users]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux