mirror of
https://github.com/apache/httpd.git
synced 2025-08-08 15:02:10 +03:00
axe an unnecessary call to sscanf() when parsing the response line
from the origin server apr_date_checkmask() already verified the expected text and digit positions; all that is needed is to cheaply find which digits git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@999694 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@@ -1534,14 +1534,13 @@ apr_status_t ap_proxy_http_process_response(apr_pool_t * p, request_rec *r,
|
|||||||
if (apr_date_checkmask(buffer, "HTTP/#.# ###*")) {
|
if (apr_date_checkmask(buffer, "HTTP/#.# ###*")) {
|
||||||
int major, minor;
|
int major, minor;
|
||||||
|
|
||||||
if (2 != sscanf(buffer, "HTTP/%u.%u", &major, &minor)) {
|
major = buffer[5] - '0';
|
||||||
major = 1;
|
minor = buffer[7] - '0';
|
||||||
minor = 1;
|
|
||||||
}
|
|
||||||
/* If not an HTTP/1 message or
|
/* If not an HTTP/1 message or
|
||||||
* if the status line was > 8192 bytes
|
* if the status line was > 8192 bytes
|
||||||
*/
|
*/
|
||||||
else if ((buffer[5] != '1') || (len >= sizeof(buffer)-1)) {
|
if ((major != 1) || (len >= sizeof(buffer)-1)) {
|
||||||
return ap_proxyerror(r, HTTP_BAD_GATEWAY,
|
return ap_proxyerror(r, HTTP_BAD_GATEWAY,
|
||||||
apr_pstrcat(p, "Corrupt status line returned by remote "
|
apr_pstrcat(p, "Corrupt status line returned by remote "
|
||||||
"server: ", buffer, NULL));
|
"server: ", buffer, NULL));
|
||||||
|
Reference in New Issue
Block a user