mirror of
https://github.com/apache/httpd.git
synced 2025-08-07 04:02:58 +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/#.# ###*")) {
|
||||
int major, minor;
|
||||
|
||||
if (2 != sscanf(buffer, "HTTP/%u.%u", &major, &minor)) {
|
||||
major = 1;
|
||||
minor = 1;
|
||||
}
|
||||
major = buffer[5] - '0';
|
||||
minor = buffer[7] - '0';
|
||||
|
||||
/* If not an HTTP/1 message or
|
||||
* 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,
|
||||
apr_pstrcat(p, "Corrupt status line returned by remote "
|
||||
"server: ", buffer, NULL));
|
||||
|
Reference in New Issue
Block a user