|
@@ -1,90 +0,0 @@
|
|
|
-From e3557528d7cdcdc2c579212be8837bc9b54635a4 Mon Sep 17 00:00:00 2001
|
|
|
-From: Frank Vanbever <frank.vanbever@essensium.com>
|
|
|
-Date: Thu, 20 Feb 2020 12:14:08 +0100
|
|
|
-Subject: [PATCH] Add separate mechanism to load libc
|
|
|
-
|
|
|
-ctypes.util.find_library() always returns None for systems which do not have the
|
|
|
-tools installed to determine the location of a given shared library (i.e.
|
|
|
-ldconfig, gcc, objdump). If find_libary() fails attempt to load known libc by
|
|
|
-SONAME.
|
|
|
-
|
|
|
-Upstream: https://github.com/ldx/python-iptables/commit/e3557528d7cdcdc2c579212be8837bc9b54635a4
|
|
|
-
|
|
|
-Signed-off-by: Frank Vanbever <frank.vanbever@essensium.com>
|
|
|
----
|
|
|
- iptc/ip4tc.py | 4 ++--
|
|
|
- iptc/util.py | 16 ++++++++++++++++
|
|
|
- iptc/xtables.py | 4 ++--
|
|
|
- 3 files changed, 20 insertions(+), 4 deletions(-)
|
|
|
-
|
|
|
-diff --git a/iptc/ip4tc.py b/iptc/ip4tc.py
|
|
|
-index 4c5d690..4ddd2dc 100644
|
|
|
---- a/iptc/ip4tc.py
|
|
|
-+++ b/iptc/ip4tc.py
|
|
|
-@@ -9,7 +9,7 @@ import socket
|
|
|
- import struct
|
|
|
- import weakref
|
|
|
-
|
|
|
--from .util import find_library, load_kernel
|
|
|
-+from .util import find_library, load_kernel, find_libc
|
|
|
- from .xtables import (XT_INV_PROTO, NFPROTO_IPV4, XTablesError, xtables,
|
|
|
- xt_align, xt_counters, xt_entry_target, xt_entry_match)
|
|
|
-
|
|
|
-@@ -26,7 +26,7 @@ if not hasattr(socket, 'IPPROTO_SCTP'):
|
|
|
-
|
|
|
- _IFNAMSIZ = 16
|
|
|
-
|
|
|
--_libc = ct.CDLL("libc.so.6")
|
|
|
-+_libc = find_libc()
|
|
|
- _get_errno_loc = _libc.__errno_location
|
|
|
- _get_errno_loc.restype = ct.POINTER(ct.c_int)
|
|
|
- _malloc = _libc.malloc
|
|
|
-diff --git a/iptc/util.py b/iptc/util.py
|
|
|
-index ae5fb9b..e6b1649 100644
|
|
|
---- a/iptc/util.py
|
|
|
-+++ b/iptc/util.py
|
|
|
-@@ -109,3 +109,19 @@ def find_library(*names):
|
|
|
- major = int(m.group(1))
|
|
|
- return lib, major
|
|
|
- return None, None
|
|
|
-+
|
|
|
-+
|
|
|
-+def find_libc():
|
|
|
-+ lib = ctypes.util.find_library('c')
|
|
|
-+ if lib is not None:
|
|
|
-+ return ctypes.CDLL(lib, mode=ctypes.RTLD_GLOBAL)
|
|
|
-+
|
|
|
-+ libnames = ['libc.so.6', 'libc.so.0', 'libc.so']
|
|
|
-+ for name in libnames:
|
|
|
-+ try:
|
|
|
-+ lib = ctypes.CDLL(name, mode=ctypes.RTLD_GLOBAL)
|
|
|
-+ return lib
|
|
|
-+ except:
|
|
|
-+ pass
|
|
|
-+
|
|
|
-+ return None
|
|
|
-diff --git a/iptc/xtables.py b/iptc/xtables.py
|
|
|
-index 93bc080..cf21029 100644
|
|
|
---- a/iptc/xtables.py
|
|
|
-+++ b/iptc/xtables.py
|
|
|
-@@ -6,7 +6,7 @@ import sys
|
|
|
- import weakref
|
|
|
-
|
|
|
- from . import version
|
|
|
--from .util import find_library
|
|
|
-+from .util import find_library, find_libc
|
|
|
- from .errors import *
|
|
|
-
|
|
|
- XT_INV_PROTO = 0x40 # invert the sense of PROTO
|
|
|
-@@ -792,7 +792,7 @@ class xtables_target(ct.Union):
|
|
|
- ("v12", _xtables_target_v12)]
|
|
|
-
|
|
|
-
|
|
|
--_libc, _ = find_library("c")
|
|
|
-+_libc = find_libc()
|
|
|
- _optind = ct.c_long.in_dll(_libc, "optind")
|
|
|
- _optarg = ct.c_char_p.in_dll(_libc, "optarg")
|
|
|
-
|
|
|
---
|
|
|
-2.20.1
|
|
|
-
|