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

(-)a/modules/filters/mod_deflate.c (-9 / +21 lines)
Lines 533-538 Link Here
533
    apr_size_t len = 0, blen;
533
    apr_size_t len = 0, blen;
534
    const char *data;
534
    const char *data;
535
    deflate_filter_config *c;
535
    deflate_filter_config *c;
536
    apr_status_t rv;
536
537
537
    /* Do nothing if asked to filter nothing. */
538
    /* Do nothing if asked to filter nothing. */
538
    if (APR_BRIGADE_EMPTY(bb)) {
539
    if (APR_BRIGADE_EMPTY(bb)) {
Lines 930-943 Link Here
930
        }
931
        }
931
932
932
        /* read */
933
        /* read */
933
        apr_bucket_read(e, &data, &len, APR_BLOCK_READ);
934
        rv = apr_bucket_read(e, &data, &len, APR_BLOCK_READ);
934
        if (!len) {
935
        if (rv != APR_SUCCESS || !len) {
935
            apr_bucket_delete(e);
936
            apr_bucket_delete(e);
936
            continue;
937
            continue;
937
        }
938
        }
938
        if (len > APR_INT32_MAX) {
939
        if (len > APR_INT32_MAX) {
939
            apr_bucket_split(e, APR_INT32_MAX);
940
            apr_bucket_split(e, APR_INT32_MAX);
940
            apr_bucket_read(e, &data, &len, APR_BLOCK_READ);
941
            rv = apr_bucket_read(e, &data, &len, APR_BLOCK_READ);
942
            if (rv != APR_SUCCESS) {
943
                apr_bucket_delete(e);
944
                continue;
945
            }
941
        }
946
        }
942
947
943
        /* This crc32 function is from zlib. */
948
        /* This crc32 function is from zlib. */
Lines 1315-1327 Link Here
1315
            }
1320
            }
1316
1321
1317
            /* read */
1322
            /* read */
1318
            apr_bucket_read(bkt, &data, &len, APR_BLOCK_READ);
1323
            rv = apr_bucket_read(bkt, &data, &len, APR_BLOCK_READ);
1319
            if (!len) {
1324
            if (rv != APR_SUCCESS || !len) {
1320
                continue;
1325
                continue;
1321
            }
1326
            }
1322
            if (len > APR_INT32_MAX) {
1327
            if (len > APR_INT32_MAX) {
1323
                apr_bucket_split(bkt, APR_INT32_MAX);
1328
                apr_bucket_split(bkt, APR_INT32_MAX);
1324
                apr_bucket_read(bkt, &data, &len, APR_BLOCK_READ);
1329
                rv = apr_bucket_read(bkt, &data, &len, APR_BLOCK_READ);
1330
                if (rv != APR_SUCCESS) {
1331
                    continue;
1332
                }
1325
            }
1333
            }
1326
1334
1327
            if (ctx->zlib_flags) {
1335
            if (ctx->zlib_flags) {
Lines 1703-1716 Link Here
1703
        }
1711
        }
1704
1712
1705
        /* read */
1713
        /* read */
1706
        apr_bucket_read(e, &data, &len, APR_BLOCK_READ);
1714
        rv = apr_bucket_read(e, &data, &len, APR_BLOCK_READ);
1707
        if (!len) {
1715
        if (rv != APR_SUCCESS || !len) {
1708
            apr_bucket_delete(e);
1716
            apr_bucket_delete(e);
1709
            continue;
1717
            continue;
1710
        }
1718
        }
1711
        if (len > APR_INT32_MAX) {
1719
        if (len > APR_INT32_MAX) {
1712
            apr_bucket_split(e, APR_INT32_MAX);
1720
            apr_bucket_split(e, APR_INT32_MAX);
1713
            apr_bucket_read(e, &data, &len, APR_BLOCK_READ);
1721
            rv = apr_bucket_read(e, &data, &len, APR_BLOCK_READ);
1722
            if (rv != APR_SUCCESS) {
1723
                apr_bucket_delete(e);
1724
                continue;
1725
            }
1714
        }
1726
        }
1715
1727
1716
        /* first bucket contains zlib header */
1728
        /* first bucket contains zlib header */

Return to bug 63265