View | Details | Raw Unified | Return to bug 690734
Collapse All | Expand All

(-)server/util_script.c.orig (-3 / +13 lines)
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,

Return to bug 690734