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]