commit 58e6a6aaebc32683f041925351d8a8101c86abda Author: U+039b *@0x39b.fr Date: Sat Jun 18 18:43:44 2016 +0200
Fix #19063: Add check in utility macro --- src/common/util.c | 3 +++ src/test/test_util.c | 5 +++++ 2 files changed, 8 insertions(+)
diff --git a/src/common/util.c b/src/common/util.c index 7217cdc..97a7e72 100644 --- a/src/common/util.c +++ b/src/common/util.c @@ -1111,6 +1111,9 @@ tor_digest256_is_zero(const char *digest) /* Were there unexpected unconverted characters? */ \ if (!next && *endptr) \ goto err; \ + /* Illogical (max, min) inputs? */ \ + if (max < min) \ + goto err; \ /* Is r within limits? */ \ if (r < min || r > max) \ goto err; \ diff --git a/src/test/test_util.c b/src/test/test_util.c index 893fc34..9086437 100644 --- a/src/test/test_util.c +++ b/src/test/test_util.c @@ -1501,6 +1501,11 @@ test_util_strmisc(void *arg) tt_int_op(-50L,OP_EQ, tor_parse_long("-50 plus garbage",10,-100,100,&i,&cp)); tt_int_op(1,OP_EQ, i); tt_str_op(cp,OP_EQ, " plus garbage"); + /* Illogical min max */ + tt_int_op(0L,OP_EQ, tor_parse_long("10",10,50,4,&i,NULL)); + tt_int_op(0,OP_EQ, i); + tt_int_op(0L,OP_EQ, tor_parse_long("-50",10,100,-100,&i,NULL)); + tt_int_op(0,OP_EQ, i); /* Out of bounds */ tt_int_op(0L,OP_EQ, tor_parse_long("10",10,50,100,&i,NULL)); tt_int_op(0,OP_EQ, i);