1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #ifndef FILTER_PRIVATE_H
22 #define FILTER_PRIVATE_H
23
24 #define FILTER_FLAG_NONE 0x0000
25
26 #define FILTER_REQUIRE_ARRAY 0x1000000
27 #define FILTER_REQUIRE_SCALAR 0x2000000
28
29 #define FILTER_FORCE_ARRAY 0x4000000
30 #define FILTER_NULL_ON_FAILURE 0x8000000
31
32 #define FILTER_FLAG_ALLOW_OCTAL 0x0001
33 #define FILTER_FLAG_ALLOW_HEX 0x0002
34
35 #define FILTER_FLAG_STRIP_LOW 0x0004
36 #define FILTER_FLAG_STRIP_HIGH 0x0008
37 #define FILTER_FLAG_ENCODE_LOW 0x0010
38 #define FILTER_FLAG_ENCODE_HIGH 0x0020
39 #define FILTER_FLAG_ENCODE_AMP 0x0040
40 #define FILTER_FLAG_NO_ENCODE_QUOTES 0x0080
41 #define FILTER_FLAG_EMPTY_STRING_NULL 0x0100
42 #define FILTER_FLAG_STRIP_BACKTICK 0x0200
43
44 #define FILTER_FLAG_ALLOW_FRACTION 0x1000
45 #define FILTER_FLAG_ALLOW_THOUSAND 0x2000
46 #define FILTER_FLAG_ALLOW_SCIENTIFIC 0x4000
47
48 #define FILTER_FLAG_SCHEME_REQUIRED 0x010000
49 #define FILTER_FLAG_HOST_REQUIRED 0x020000
50 #define FILTER_FLAG_PATH_REQUIRED 0x040000
51 #define FILTER_FLAG_QUERY_REQUIRED 0x080000
52
53 #define FILTER_FLAG_IPV4 0x100000
54 #define FILTER_FLAG_IPV6 0x200000
55 #define FILTER_FLAG_NO_RES_RANGE 0x400000
56 #define FILTER_FLAG_NO_PRIV_RANGE 0x800000
57
58 #define FILTER_FLAG_HOSTNAME 0x100000
59
60 #define FILTER_VALIDATE_INT 0x0101
61 #define FILTER_VALIDATE_BOOLEAN 0x0102
62 #define FILTER_VALIDATE_FLOAT 0x0103
63
64 #define FILTER_VALIDATE_REGEXP 0x0110
65 #define FILTER_VALIDATE_URL 0x0111
66 #define FILTER_VALIDATE_EMAIL 0x0112
67 #define FILTER_VALIDATE_IP 0x0113
68 #define FILTER_VALIDATE_MAC 0x0114
69 #define FILTER_VALIDATE_DOMAIN 0x0115
70 #define FILTER_VALIDATE_LAST 0x0115
71
72 #define FILTER_VALIDATE_ALL 0x0100
73
74 #define FILTER_DEFAULT 0x0204
75 #define FILTER_UNSAFE_RAW 0x0204
76
77 #define FILTER_SANITIZE_STRING 0x0201
78 #define FILTER_SANITIZE_ENCODED 0x0202
79 #define FILTER_SANITIZE_SPECIAL_CHARS 0x0203
80 #define FILTER_SANITIZE_EMAIL 0x0205
81 #define FILTER_SANITIZE_URL 0x0206
82 #define FILTER_SANITIZE_NUMBER_INT 0x0207
83 #define FILTER_SANITIZE_NUMBER_FLOAT 0x0208
84 #define FILTER_SANITIZE_MAGIC_QUOTES 0x0209
85 #define FILTER_SANITIZE_FULL_SPECIAL_CHARS 0x020a
86 #define FILTER_SANITIZE_LAST 0x020a
87
88 #define FILTER_SANITIZE_ALL 0x0200
89
90 #define FILTER_CALLBACK 0x0400
91
92 #define PHP_FILTER_ID_EXISTS(id) \
93 ((id >= FILTER_SANITIZE_ALL && id <= FILTER_SANITIZE_LAST) \
94 || (id >= FILTER_VALIDATE_ALL && id <= FILTER_VALIDATE_LAST) \
95 || id == FILTER_CALLBACK)
96
97 #define RETURN_VALIDATION_FAILED \
98 zval_dtor(value); \
99 if (flags & FILTER_NULL_ON_FAILURE) { \
100 ZVAL_NULL(value); \
101 } else { \
102 ZVAL_FALSE(value); \
103 } \
104 return; \
105
106 #define PHP_FILTER_TRIM_DEFAULT(p, len) PHP_FILTER_TRIM_DEFAULT_EX(p, len, 1);
107
108 #define PHP_FILTER_TRIM_DEFAULT_EX(p, len, return_if_empty) { \
109 while ((len > 0) && (*p == ' ' || *p == '\t' || *p == '\r' || *p == '\v' || *p == '\n')) { \
110 p++; \
111 len--; \
112 } \
113 if (len < 1 && return_if_empty) { \
114 RETURN_VALIDATION_FAILED \
115 } \
116 if (len > 0) { \
117 while (p[len-1] == ' ' || p[len-1] == '\t' || p[len-1] == '\r' || p[len-1] == '\v' || p[len-1] == '\n') { \
118 len--; \
119 } \
120 } \
121 }
122
123 #endif
124
125
126
127
128
129
130
131
132