- Fixed bug #42015 (ldap_rename(): server error "DSA is unwilling to perform").
(bob at mroczka dot com, Jani)
- Fixed bug #41989 (move_uploaded_file() & relative path in ZTS mode). (Tony)
+- Fixed bug #41983 (Error Fetching http headers terminated by '\n'). (Dmitry)
- Fixed bug #41964 (strtotime returns a timestamp for non-time string of
pattern '(A|a) .+'). (Derick)
- Fixed bug #41961 (Ensure search for hidden private methods does not stray
/* match */
tmp = pos + typelen;
- eol = strstr(tmp, "\r\n");
+ eol = strchr(tmp, '\n');
if (eol == NULL) {
eol = headers + headerslen;
+ } else if (eol > tmp && *(eol-1) == '\r') {
+ eol--;
}
return estrndup(tmp, eol - tmp);
}
/* find next line */
- pos = strstr(pos, "\r\n");
+ pos = strchr(pos, '\n');
if (pos) {
- pos += 2;
+ pos++;
}
} while (pos);
}
if (header_chunked) {
- char done, chunk_size[10];
+ char ch, done, chunk_size[10], headerbuf[8192];
done = FALSE;
len_size += len_read;
http_buf_size += len_read;
}
- }
- /* Eat up '\r' '\n' */
- php_stream_getc(stream);
- php_stream_getc(stream);
+ /* Eat up '\r' '\n' */
+ ch = php_stream_getc(stream);
+ if (ch == '\r') {
+ ch = php_stream_getc(stream);
+ }
+ if (ch != '\n') {
+ /* Somthing wrong in chunked encoding */
+ if (http_buf) {
+ efree(http_buf);
+ }
+ return FALSE;
+ }
+ }
} else {
/* Somthing wrong in chunked encoding */
if (http_buf) {
}
}
+ /* Ignore trailer headers */
+ while (1) {
+ if (!php_stream_gets(stream, headerbuf, sizeof(headerbuf))) {
+ break;
+ }
+
+ if ((headerbuf[0] == '\r' && headerbuf[1] == '\n') ||
+ (headerbuf[0] == '\n')) {
+ /* empty line marks end of headers */
+ break;
+ }
+ }
+
if (http_buf == NULL) {
http_buf = emalloc(1);
}
break;
}
- if (strcmp(headerbuf, "\r\n") == 0) {
+ if ((headerbuf[0] == '\r' && headerbuf[1] == '\n') ||
+ (headerbuf[0] == '\n')) {
/* empty line marks end of headers */
done = TRUE;
break;