diff --git a/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike b/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike index af73f391bdc21f46ff8a1991acfd9aaf044edd7a..574e41af4015e29d96c8fa0131994c207fd18abd 100644 --- a/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike +++ b/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike @@ -587,9 +587,9 @@ void response_and_finish(mapping m, function|void _log_cb) int a,b; if (sscanf(request_headers->range,"bytes%*[ =]%d-%d",a,b)==3) m->start=a,m->stop=b; - else if (sscanf(request_headers->range,"bytes%*[ =]-%d",b)) + else if (sscanf(request_headers->range,"bytes%*[ =]-%d",b)==2) { - if( m->size==-1 ) + if( m->size==-1 || m->size < b ) { m_delete(m,"file"); m->data=""; @@ -601,7 +601,7 @@ void response_and_finish(mapping m, function|void _log_cb) m->stop=-1; } } - else if (sscanf(request_headers->range,"bytes%*[ =]%d-",a)) + else if (sscanf(request_headers->range,"bytes%*[ =]%d-",a)==2) m->start=a,m->stop=-1; else if (has_value(request_headers->range, ",")) {