diff --git a/ext/filter/logical_filters.c b/ext/filter/logical_filters.c index 75550238e1bdc..0b6354e815a1a 100644 --- a/ext/filter/logical_filters.c +++ b/ext/filter/logical_filters.c @@ -789,10 +789,10 @@ void php_filter_validate_ip(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */ if (flags & FILTER_FLAG_NO_RES_RANGE) { if ( (ip[0] == 0) || + (ip[0] == 127) || (ip[0] == 100 && (ip[1] >= 64 && ip[1] <= 127)) || (ip[0] == 169 && ip[1] == 254) || (ip[0] == 192 && ip[1] == 0 && ip[2] == 2) || - (ip[0] == 127 && ip[1] == 0 && ip[2] == 0 && ip[3] == 1) || (ip[0] >= 224 && ip[0] <= 255) ) { RETURN_VALIDATION_FAILED diff --git a/ext/filter/tests/bug71745.phpt b/ext/filter/tests/bug71745.phpt new file mode 100644 index 0000000000000..35866c55a5f54 --- /dev/null +++ b/ext/filter/tests/bug71745.phpt @@ -0,0 +1,15 @@ +--TEST-- +Bug #71745 (FILTER_FLAG_NO_RES_RANGE does not cover whole 127.0.0.0/8 range) +--SKIPIF-- + +--FILE-- + +--EXPECT-- +bool(false) +bool(false) +bool(false) +bool(false)