From d4fc2f04e5fa3cbad31d04eefa39632a301a3d95 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Mon, 24 Sep 2012 14:32:26 +0200 Subject: [PATCH] parser: fix overflowing integer type options If we use bs=4g, the parser will happily take it since it shares the data type with unsigned long long options. Make sure that FIO_OPT_INT types have a cap of UINT_MAX, if they haven't set a lower limit. Signed-off-by: Jens Axboe --- parse.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/parse.c b/parse.c index c8b7545a..1a686e4c 100644 --- a/parse.c +++ b/parse.c @@ -430,13 +430,13 @@ static int __handle_option(struct fio_option *o, const char *ptr, void *data, break; if (o->maxval && ull > o->maxval) { - log_err("max value out of range: %lld" - " (%d max)\n", ull, o->maxval); + log_err("max value out of range: %llu" + " (%u max)\n", ull, o->maxval); return 1; } if (o->minval && ull < o->minval) { - log_err("min value out of range: %lld" - " (%d min)\n", ull, o->minval); + log_err("min value out of range: %llu" + " (%u min)\n", ull, o->minval); return 1; } @@ -1087,6 +1087,10 @@ void option_init(struct fio_option *o) o->minval = 0; o->maxval = 1; } + if (o->type == FIO_OPT_INT) { + if (!o->maxval) + o->maxval = UINT_MAX; + } if (o->type == FIO_OPT_FLOAT_LIST) { o->minfp = NAN; o->maxfp = NAN; -- 2.25.1