Package: apt-proxy
Version: 1.9.35
Severity: normal
Tags: patch

If you use a browser to go to the root of an apt-proxy installation
(e.g. http://whatever:9999/) then it causes a python exception:


2006/09/08 12:49 BST [Channel,0,127.0.0.1] Traceback (most recent call last):
          File "/usr/lib/python2.4/site-packages/twisted/python/log.py", line 
53, in callWithLogger
            return callWithContext({"system": lp}, func, *args, **kw)
          File "/usr/lib/python2.4/site-packages/twisted/python/log.py", line 
38, in callWithContext
            return context.call({ILogContext: newCtx}, func, *args, **kw)
          File "/usr/lib/python2.4/site-packages/twisted/python/context.py", 
line 59, in callWithContext
            return self.currentContext().callWithContext(ctx, func, *args, **kw)
          File "/usr/lib/python2.4/site-packages/twisted/python/context.py", 
line 37, in callWithContext
            return func(*args,**kw)
        --- <exception caught here> ---
          File 
"/usr/lib/python2.4/site-packages/twisted/internet/selectreactor.py", line 139, 
in _doReadOrWrite
            why = getattr(selectable, method)()
          File "/usr/lib/python2.4/site-packages/twisted/internet/tcp.py", line 
348, in doRead
            return self.protocol.dataReceived(data)
          File "/usr/lib/python2.4/site-packages/twisted/protocols/basic.py", 
line 232, in dataReceived
            why = self.lineReceived(line)
          File "/usr/lib/python2.4/site-packages/twisted/web/http.py", line 
1004, in lineReceived
            self.allContentReceived()
          File "/usr/lib/python2.4/site-packages/apt_proxy/apt_proxy.py", line 
376, in allContentReceived
            http.HTTPChannel.allContentReceived(self)
          File "/usr/lib/python2.4/site-packages/twisted/web/http.py", line 
1045, in allContentReceived
            req.requestReceived(command, path, version)
          File "/usr/lib/python2.4/site-packages/twisted/web/http.py", line 
601, in requestReceived
            self.process()
          File "/usr/lib/python2.4/site-packages/apt_proxy/apt_proxy.py", line 
269, in process
            backend_path = self.uri.split('/',2)[2]
        exceptions.IndexError: list index out of range


Here's a patch which fixes that, and also alters the finishCode()
method to send the error code and message in HTML in the body of the
reply so someone can actually see it in a browser:


--- /usr/share/pycentral/apt-proxy/site-packages/apt_proxy/apt_proxy.py~        
2006-08-14 23:00:45.000000000 +0100
+++ /usr/share/pycentral/apt-proxy/site-packages/apt_proxy/apt_proxy.py 
2006-09-08 13:06:24.000000000 +0100
@@ -264,7 +264,13 @@
 
         log.debug("backend: %s %s" % (self.backend.base, self.backend.uris))
 
-        backend_path = self.uri.split('/',2)[2]
+        elements = self.uri.split('/', 2)
+        if len(elements) < 3:
+            log.debug("abort - too few slashes in URI %s" % (self.uri), 
'Request')
+            self.finishCode(http.FORBIDDEN, 'too few slashes in URI %s' % 
(self.uri))
+            return
+
+        backend_path = elements[2]
         self.cacheEntry = self.backend.get_cache_entry(backend_path)
 
         if not self.cacheEntry.filetype:
@@ -315,7 +321,8 @@
         "Finish the request with a status code and no streamed data"
         log.debug("finishCode: %s, %s" % (responseCode, message), 'Request')
         self.setResponseCode(responseCode, message)
-        self.write("")
+        self.setHeader("content-type", "text/html")
+        self.write("<html><head><title>ERROR %d</title></head><body>ERROR %d - 
%s</body></html>\n" % (responseCode, responseCode, message))
         self.finish()
 
     def finish(self):


Cheers,
Mark.


-- System Information:
Debian Release: testing/unstable
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable'), (500, 'stable'), (1, 
'experimental')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.16-2-686-smp
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)

Versions of packages apt-proxy depends on:
ii  adduser                       3.97       Add and remove users and groups
ii  bzip2                         1.0.3-3    high-quality block-sorting file co
ii  debconf [debconf-2.0]         1.5.3      Debian configuration management sy
ii  logrotate                     3.7.1-3    Log rotation utility
ii  python                        2.4.3-11   An interactive high-level object-o
ii  python-apt                    0.6.19     Python interface to libapt-pkg
ii  python-central                0.5.5      register and build utility for Pyt
ii  python-twisted-web            0.6.0-1    An HTTP protocol implementation to

apt-proxy recommends no packages.

-- debconf information excluded


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to