|
Lines 406-411
AP_DECLARE(int) ap_scan_script_header_er
Link Here
|
| 406 |
{ |
406 |
{ |
| 407 |
char x[MAX_STRING_LEN]; |
407 |
char x[MAX_STRING_LEN]; |
| 408 |
char *w, *l; |
408 |
char *w, *l; |
|
|
409 |
int wlen; |
| 409 |
int p; |
410 |
int p; |
| 410 |
int cgi_status = HTTP_UNSET; |
411 |
int cgi_status = HTTP_UNSET; |
| 411 |
apr_table_t *merge; |
412 |
apr_table_t *merge; |
|
Lines 414-420
AP_DECLARE(int) ap_scan_script_header_er
Link Here
|
| 414 |
if (buffer) { |
415 |
if (buffer) { |
| 415 |
*buffer = '\0'; |
416 |
*buffer = '\0'; |
| 416 |
} |
417 |
} |
| 417 |
w = buffer ? buffer : x; |
418 |
if (r->server->limit_req_fieldsize + 2 > MAX_STRING_LEN) { |
|
|
419 |
w = apr_palloc(r->pool, r->server->limit_req_fieldsize + 2); |
| 420 |
wlen = r->server->limit_req_fieldsize + 2; |
| 421 |
} else { |
| 422 |
w = buffer ? buffer : x; |
| 423 |
wlen = MAX_STRING_LEN; |
| 424 |
} |
| 418 |
|
425 |
|
| 419 |
/* temporary place to hold headers to merge in later */ |
426 |
/* temporary place to hold headers to merge in later */ |
| 420 |
merge = apr_table_make(r->pool, 10); |
427 |
merge = apr_table_make(r->pool, 10); |
|
Lines 430-436
AP_DECLARE(int) ap_scan_script_header_er
Link Here
|
| 430 |
|
437 |
|
| 431 |
while (1) { |
438 |
while (1) { |
| 432 |
|
439 |
|
| 433 |
int rv = (*getsfunc) (w, MAX_STRING_LEN - 1, getsfunc_data); |
440 |
int rv = (*getsfunc) (w, wlen - 1, getsfunc_data); |
| 434 |
if (rv == 0) { |
441 |
if (rv == 0) { |
| 435 |
ap_log_rerror(APLOG_MARK, APLOG_ERR|APLOG_TOCLIENT, 0, r, |
442 |
ap_log_rerror(APLOG_MARK, APLOG_ERR|APLOG_TOCLIENT, 0, r, |
| 436 |
"Premature end of script headers: %s", |
443 |
"Premature end of script headers: %s", |
|
Lines 537-545
AP_DECLARE(int) ap_scan_script_header_er
Link Here
|
| 537 |
|
544 |
|
| 538 |
if (!buffer) { |
545 |
if (!buffer) { |
| 539 |
/* Soak up all the script output - may save an outright kill */ |
546 |
/* Soak up all the script output - may save an outright kill */ |
| 540 |
while ((*getsfunc) (w, MAX_STRING_LEN - 1, getsfunc_data)) { |
547 |
while ((*getsfunc) (w, wlen - 1, getsfunc_data)) { |
| 541 |
continue; |
548 |
continue; |
| 542 |
} |
549 |
} |
|
|
550 |
} else if (w != buffer) { |
| 551 |
strncpy(buffer, w, MAX_STRING_LEN - 1); |
| 552 |
buffer[MAX_STRING_LEN - 1] = 0; |
| 543 |
} |
553 |
} |
| 544 |
|
554 |
|
| 545 |
ap_log_rerror(APLOG_MARK, APLOG_ERR|APLOG_TOCLIENT, 0, r, |
555 |
ap_log_rerror(APLOG_MARK, APLOG_ERR|APLOG_TOCLIENT, 0, r, |