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]