]>
Commit | Line | Data |
---|---|---|
fb98beff ER |
1 | --- PHP_5_3/ext/filter/logical_filters.c 2010/12/12 19:35:11 306289 |
2 | +++ PHP_5_3/ext/filter/logical_filters.c 2010/12/12 19:54:21 306290 | |
3 | @@ -735,8 +735,40 @@ | |
4 | RETURN_VALIDATION_FAILED | |
5 | } | |
6 | } | |
7 | - if (flags & FILTER_FLAG_NO_RES_RANGE && Z_STRLEN_P(value) == 3 && !strcmp("::1", Z_STRVAL_P(value))) { | |
8 | - RETURN_VALIDATION_FAILED | |
9 | + if (flags & FILTER_FLAG_NO_RES_RANGE) { | |
10 | + switch (Z_STRLEN_P(value)) { | |
11 | + case 1: case 0: | |
12 | + break; | |
13 | + case 2: | |
14 | + if (!strcmp("::", Z_STRVAL_P(value))) { | |
15 | + RETURN_VALIDATION_FAILED | |
16 | + } | |
17 | + break; | |
18 | + case 3: | |
19 | + if (!strcmp("::1", Z_STRVAL_P(value)) || !strcmp("5f:", Z_STRVAL_P(value))) { | |
20 | + RETURN_VALIDATION_FAILED | |
21 | + } | |
22 | + break; | |
23 | + default: | |
24 | + if (Z_STRLEN_P(value) >= 5) { | |
25 | + if ( | |
26 | + !strncasecmp("fe8", Z_STRVAL_P(value), 3) || | |
27 | + !strncasecmp("fe9", Z_STRVAL_P(value), 3) || | |
28 | + !strncasecmp("fea", Z_STRVAL_P(value), 3) || | |
29 | + !strncasecmp("feb", Z_STRVAL_P(value), 3) | |
30 | + ) { | |
31 | + RETURN_VALIDATION_FAILED | |
32 | + } | |
33 | + } | |
34 | + if ( | |
35 | + (Z_STRLEN_P(value) >= 9 && !strncasecmp("2001:0db8", Z_STRVAL_P(value), 9)) || | |
36 | + (Z_STRLEN_P(value) >= 2 && !strncasecmp("5f", Z_STRVAL_P(value), 2)) || | |
37 | + (Z_STRLEN_P(value) >= 4 && !strncasecmp("3ff3", Z_STRVAL_P(value), 4)) || | |
38 | + (Z_STRLEN_P(value) >= 8 && !strncasecmp("2001:001", Z_STRVAL_P(value), 8)) | |
39 | + ) { | |
40 | + RETURN_VALIDATION_FAILED | |
41 | + } | |
42 | + } | |
43 | } | |
44 | } | |
45 | break; |