. Fixed isset/empty/(bool) behavior
. Fixed iterator edge cases
. Added methods getNamespaces(), getDocNamespaces()
+- Prevent header injection by limiting each header to a single line. (Ilia)
- Fixed possible XSS inside error reporting functionality. (Ilia)
- Fixed many bugs in OCI8. (Tony)
- Fixed crash and leak in mysqli when using 4.1.x client libraries and
while(isspace(header_line[header_line_len-1]))
header_line[--header_line_len]='\0';
+ /* new line safety check */
+ {
+ char *s = header_line, *e = header_line + header_line_len, *p;
+ while (s < e && (p = memchr(s, '\n', (e - s)))) {
+ if (*(p + 1) == ' ' || *(p + 1) == '\t') {
+ s = p + 1;
+ continue;
+ }
+ efree(header_line);
+ sapi_module.sapi_error(E_WARNING, "Header may not contain more then a single header, new line detected.");
+ return FAILURE;
+ }
+ }
sapi_header.header = header_line;
sapi_header.header_len = header_line_len;