From c7a61ce2c25d4af818c146714defb0a97b826762 Mon Sep 17 00:00:00 2001
From: Martin Nilsson <mani@lysator.liu.se>
Date: Fri, 1 Oct 2010 16:07:20 +0200
Subject: [PATCH] A few byte range fixes. Implementation still broken though.

Rev: lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike:1.52
---
 .../Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike       | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

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 af73f391bd..574e41af40 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, ","))
       {
-- 
GitLab