Source: python-pcs Version: 0.5+debian-1.1 Severity: normal Tags: patch
IP6Connector.mcast() can/will fail in a variety of ways: 1) On 64-bit architectures (dl is not available there): Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python2.6/dist-packages/pcs/__init__.py", line 958, in mcast import dl ImportError: No module named dl 2) If libc*-dev is not installed: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python2.6/dist-packages/pcs/__init__.py", line 959, in mcast _libc = dl.open('libc.so') dl.error: libc.so: cannot open shared object file: No such file or directory 3) Because dl.open doesn't work for a reason or another: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python2.6/dist-packages/pcs/__init__.py", line 959, in mcast _libc = dl.open('libc.so') dl.error: /usr/lib/libc.so: invalid ELF header 4) Otherwise: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python2.6/dist-packages/pcs/__init__.py", line 962, in mcast self.sock.setsockopt(IPPROTO_IPV6, IPV6_MULTICAST_LOOP, 1) AttributeError: 'UDP6Connector' object has no attribute 'sock' The attached patch fixes this bug. -- System Information: Debian Release: squeeze/sid APT prefers unstable APT policy: (990, 'unstable'), (500, 'experimental') Architecture: i386 (i686) Kernel: Linux 2.6.32-5-686 (SMP w/2 CPU cores) Locale: LANG=C, LC_CTYPE=pl_PL.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash -- Jakub Wilk
diff -u python-pcs-0.5+debian/debian/control python-pcs-0.5+debian/debian/control --- python-pcs-0.5+debian/debian/control +++ python-pcs-0.5+debian/debian/control @@ -4,7 +4,7 @@ Maintainer: Robert S. Edmonds <edmo...@debian.org> Build-Depends: debhelper (>= 5.0.38), python-all-dev (>= 2.3.5-11), python-central (>= 0.5.6), dpatch, texlive-latex-recommended Standards-Version: 3.7.2 -XS-Python-Version: all +XS-Python-Version: >= 2.5 Package: python-pcs Architecture: all diff -u python-pcs-0.5+debian/debian/changelog python-pcs-0.5+debian/debian/changelog --- python-pcs-0.5+debian.orig/pcs/__init__.py +++ python-pcs-0.5+debian/pcs/__init__.py @@ -69,6 +69,9 @@ import itertools +import ctypes, ctypes.util +_libc = ctypes.CDLL(ctypes.util.find_library('c')) + def attribreprlist(obj, attrs): return map(lambda x, y = obj: '%s: %s' % (x, repr(getattr(y, x))), itertools.ifilter(lambda x, y = obj: hasattr(y, x), attrs)) @@ -954,9 +957,7 @@ def mcast(self, iface): """set IP6 connector into multicast mode""" - import dl - _libc = dl.open('libc.so') - ifn = _libc.call('if_nametoindex', iface) + ifn = _libc.if_nametoindex(iface) self.sock.setsockopt(IPPROTO_IPV6, IPV6_MULTICAST_LOOP, 1) self.sock.setsockopt(IPPROTO_IPV6, IPV6_MULTICAST_HOPS, 5) self.sock.setsockopt(IPPROTO_IPV6, IPV6_MULTICAST_IF, ifn)
signature.asc
Description: Digital signature