X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_headers_api.c;h=87af7586e114887ad29c89b7ba968c03e313cf66;hp=99eb1880ef41133e363b2ba453a86f2f34fead3c;hb=85f5451a3e9fad7cb9728ba5408b433fca22b44b;hpb=b23b4edaebd71ff76579b97f3ee353f43e83bd25 diff --git a/http_headers_api.c b/http_headers_api.c index 99eb188..87af758 100644 --- a/http_headers_api.c +++ b/http_headers_api.c @@ -6,7 +6,7 @@ | modification, are permitted provided that the conditions mentioned | | in the accompanying LICENSE file are met. | +--------------------------------------------------------------------+ - | Copyright (c) 2004-2006, Michael Wallner | + | Copyright (c) 2004-2007, Michael Wallner | +--------------------------------------------------------------------+ */ @@ -201,7 +201,7 @@ PHP_HTTP_API http_range_status _http_get_request_ranges(HashTable *ranges, size_ long begin = -1, end = -1, *ptr; if ( !(zrange = http_get_server_var("HTTP_RANGE", 1)) || - Z_STRLEN_P(zrange) < lenof("bytes=") || strncmp(Z_STRVAL_P(zrange), "bytes=", lenof("bytes="))) { + (size_t) Z_STRLEN_P(zrange) < lenof("bytes=") || strncmp(Z_STRVAL_P(zrange), "bytes=", lenof("bytes="))) { return RANGE_NO; } range = Z_STRVAL_P(zrange) + lenof("bytes="); @@ -253,13 +253,21 @@ PHP_HTTP_API http_range_status _http_get_request_ranges(HashTable *ranges, size_ switch (begin) { /* "0-12345" */ case -10: - /* "0-" */ - if (end == -1) { - return RANGE_NO; - } - /* "0-0" or overflow */ - if (end == -10 || length <= (size_t) end) { - return RANGE_ERR; + switch (end) { + /* "0-" */ + case -1: + return RANGE_NO; + + /* "0-0" */ + case -10: + end = 0; + break; + + default: + if (length <= (size_t) end) { + return RANGE_ERR; + } + break; } begin = 0; break;