diff options
author | drochner <drochner@pkgsrc.org> | 2005-02-04 15:39:04 +0000 |
---|---|---|
committer | drochner <drochner@pkgsrc.org> | 2005-02-04 15:39:04 +0000 |
commit | 2cefade65dfa20af03311fa62c7573af7e7b57ed (patch) | |
tree | bb81caac418a09c508af5743525a8ab16d197547 /lang/python22 | |
parent | 409fbf659392d95538bcfa6ea686d43ee8aee92c (diff) | |
download | pkgsrc-2cefade65dfa20af03311fa62c7573af7e7b57ed.tar.gz |
apply the security fix from
http://www.python.org/security/PSF-2005-001/
This disables hierarchical object lookups in SimpleXMLRPCServer.
Unfortunately, this breaks some applications (eg kenosis). Don't
shoot me for this.
bump PKGREVISION
Diffstat (limited to 'lang/python22')
-rw-r--r-- | lang/python22/Makefile | 4 | ||||
-rw-r--r-- | lang/python22/distinfo | 3 | ||||
-rw-r--r-- | lang/python22/patches/patch-an | 70 |
3 files changed, 74 insertions, 3 deletions
diff --git a/lang/python22/Makefile b/lang/python22/Makefile index 7900d25c9eb..4952e392dbe 100644 --- a/lang/python22/Makefile +++ b/lang/python22/Makefile @@ -1,9 +1,9 @@ -# $NetBSD: Makefile,v 1.25 2005/01/30 12:44:39 jmmv Exp $ +# $NetBSD: Makefile,v 1.26 2005/02/04 15:39:04 drochner Exp $ # DISTNAME= Python-2.2.3 PKGNAME= python22-2.2.3 -PKGREVISION= 4 +PKGREVISION= 5 CATEGORIES= lang python MASTER_SITES= ftp://ftp.python.org/pub/python/2.2.3/ EXTRACT_SUFX= .tgz diff --git a/lang/python22/distinfo b/lang/python22/distinfo index a1858c20a40..c62da12eb11 100644 --- a/lang/python22/distinfo +++ b/lang/python22/distinfo @@ -1,4 +1,4 @@ -$NetBSD: distinfo,v 1.13 2005/01/24 21:43:40 tv Exp $ +$NetBSD: distinfo,v 1.14 2005/02/04 15:39:04 drochner Exp $ SHA1 (Python-2.2.3.tgz) = 177d587e77e0eaa14131ab0d0d0b470777de4400 Size (Python-2.2.3.tgz) = 6709556 bytes @@ -8,5 +8,6 @@ SHA1 (patch-ae) = aefeec78e25631a6e9e2aa047dce12c9c522715e SHA1 (patch-af) = a2b23859941766319f638e40c49b5af3f504ef52 SHA1 (patch-ai) = 02f530a08fd8b61a696ae43ddabd7e86e4af7727 SHA1 (patch-al) = e114392656703cfda734d3a9ae0072a9fbcc8123 +SHA1 (patch-an) = 8e5b93bc65bb6d271e8e111949f715f7234f4371 SHA1 (patch-bb) = 389c439e8031257ca997455e10c8bd327b14638a SHA1 (patch-bc) = 9fbe77ff35519a290ef1f70fcaa72a60009a36a1 diff --git a/lang/python22/patches/patch-an b/lang/python22/patches/patch-an new file mode 100644 index 00000000000..d0d83f0a276 --- /dev/null +++ b/lang/python22/patches/patch-an @@ -0,0 +1,70 @@ +$NetBSD: patch-an,v 1.1 2005/02/04 15:39:04 drochner Exp $ + +--- Lib/SimpleXMLRPCServer.py.orig 2001-09-29 06:54:33.000000000 +0200 ++++ Lib/SimpleXMLRPCServer.py +@@ -161,7 +161,8 @@ class SimpleXMLRPCRequestHandler(BaseHTT + try: + func = _resolve_dotted_attribute( + self.server.instance, +- method ++ method, ++ self.allow_dotted_names + ) + except AttributeError: + pass +@@ -178,11 +179,20 @@ class SimpleXMLRPCRequestHandler(BaseHTT + BaseHTTPServer.BaseHTTPRequestHandler.log_request(self, code, size) + + +-def _resolve_dotted_attribute(obj, attr): ++def _resolve_dotted_attribute(obj, attr, allow_dotted_names=True): + """Resolves a dotted attribute name to an object. Raises + an AttributeError if any attribute in the chain starts with a '_'. ++ ++ If the optional allow_dotted_names argument is false, dots are not ++ supported and this function operates similar to getattr(obj, attr). + """ +- for i in attr.split('.'): ++ ++ if allow_dotted_names: ++ attrs = attr.split('.') ++ else: ++ attrs = [attr] ++ ++ for i in attrs: + if i.startswith('_'): + raise AttributeError( + 'attempt to access private attribute "%s"' % i +@@ -206,7 +216,7 @@ class SimpleXMLRPCServer(SocketServer.TC + self.instance = None + SocketServer.TCPServer.__init__(self, addr, requestHandler) + +- def register_instance(self, instance): ++ def register_instance(self, instance, allow_dotted_names=False): + """Registers an instance to respond to XML-RPC requests. + + Only one instance can be installed at a time. +@@ -225,9 +235,23 @@ class SimpleXMLRPCServer(SocketServer.TC + + If a registered function matches a XML-RPC request, then it + will be called instead of the registered instance. ++ ++ If the optional allow_dotted_names argument is true and the ++ instance does not have a _dispatch method, method names ++ containing dots are supported and resolved, as long as none of ++ the name segments start with an '_'. ++ ++ *** SECURITY WARNING: *** ++ ++ Enabling the allow_dotted_names options allows intruders ++ to access your module's global variables and may allow ++ intruders to execute arbitrary code on your machine. Only ++ use this option on a secure, closed network. ++ + """ + + self.instance = instance ++ self.allow_dotted_names = allow_dotted_names + + def register_function(self, function, name = None): + """Registers a function to respond to XML-RPC requests. |