On Wed, Feb 17, 2010 at 02:04:03AM +0000, Stuart Henderson wrote:
> On 2010-02-16, trustlevel-...@yahoo.co.uk <trustlevel-...@yahoo.co.uk> wrote:
> > I've seen examples of earlier versions than Apache 1.3.29 said to be working
> > with byte-range requests, has anyone got the byte range requests to work 
> > with
> > openbsd without using php code or know how this can be done or if it works 
> > by
> > default.
> 
> sorry, it's broken, maybe someone who uses base httpd and has some
> spare time might like to look into fixing it...
> 
> http://permalink.gmane.org/gmane.os.openbsd.misc/169541
> 


This appears to be due to the format of the string being passed to
strtonum().  ap_strtol() was tolerant of it.  It's being passed the
string from the Range: header.

For example, the following valid request (taken directly from sniffing a
wget session).

  GET /testfile HTTP/1.0
  Range: bytes=300417024-

This ends up following the code path of the first strtonum() call around
line 159 in http_protocol.c in the parse_byterange() function.  The
string passed to strtonum to convert (r->range) not only contains the
number from the header, but the trailing dash ("300417024-"), which
strtonum does not like.  As strtonum fails, the start offset is set to
0.

This bug should be present on a 64-bit arch as well.

Reply via email to