Changes with Apache 2.0.37
+ *) Detect overflow when reading the hex bytes forming a chunk line.
+ [Aaron Bannert]
+
*) Allow RewriteMap prg:'s to take command-line arguments. PR 8464.
[James Tait <JTait@wyrddreams.demon.co.uk>]
apr_brigade_flatten(bb, line, &len);
ctx->remaining = get_chunk_size(line);
- /* Detect invalid chunk sizes. */
+ /* Detect chunksize error (such as overflow) */
if (ctx->remaining < 0) {
apr_brigade_cleanup(bb);
e = ap_bucket_error_create(HTTP_REQUEST_ENTITY_TOO_LARGE, NULL,
apr_brigade_flatten(bb, line, &len);
ctx->remaining = get_chunk_size(line);
- /* Detect invalid chunk sizes. */
+ /* Detect chunksize error (such as overflow) */
if (ctx->remaining < 0) {
apr_brigade_cleanup(bb);
e = ap_bucket_error_create(HTTP_REQUEST_ENTITY_TOO_LARGE,
static long get_chunk_size(char *b)
{
long chunksize = 0;
+ size_t chunkbits = sizeof(long) * 8;
- while (apr_isxdigit(*b)) {
+ while (apr_isxdigit(*b) && (chunkbits > 0)) {
int xvalue = 0;
if (*b >= '0' && *b <= '9') {
}
chunksize = (chunksize << 4) | xvalue;
+ chunkbits -= 4;
++b;
}
+ if (apr_isxdigit(*b) && (chunkbits <= 0)) {
+ /* overflow */
+ return -1;
+ }
return chunksize;
}