|
21 | 21 |
|
22 | 22 | from scapy.compat import raw |
23 | 23 | from scapy.consts import LINUX |
24 | | -from scapy.arch.common import compile_filter |
| 24 | +from scapy.arch.common import compile_filter, free_filter |
25 | 25 | from scapy.config import conf |
26 | 26 | from scapy.data import MTU, ETH_P_ALL, SOL_PACKET, SO_ATTACH_FILTER, \ |
27 | 27 | SO_TIMESTAMPNS |
@@ -130,14 +130,14 @@ def attach_filter(sock, bpf_filter, iface): |
130 | 130 | if conf.use_pypy and sys.pypy_version_info <= (7, 3, 2): # type: ignore |
131 | 131 | # PyPy < 7.3.2 has a broken behavior |
132 | 132 | # https://foss.heptapod.net/pypy/pypy/-/issues/3298 |
133 | | - bp = struct.pack( # type: ignore |
| 133 | + fp = struct.pack( # type: ignore |
134 | 134 | 'HL', |
135 | 135 | bp.bf_len, ctypes.addressof(bp.bf_insns.contents) |
136 | 136 | ) |
137 | 137 | else: |
138 | | - bp = sock_fprog(bp.bf_len, bp.bf_insns) # type: ignore |
139 | | - sock.setsockopt(socket.SOL_SOCKET, SO_ATTACH_FILTER, bp) |
140 | | - |
| 138 | + fp = sock_fprog(bp.bf_len, bp.bf_insns) # type: ignore |
| 139 | + sock.setsockopt(socket.SOL_SOCKET, SO_ATTACH_FILTER, fp) |
| 140 | + free_filter(bp) |
141 | 141 |
|
142 | 142 | def set_promisc(s, iff, val=1): |
143 | 143 | # type: (socket.socket, _GlobInterfaceType, int) -> None |
|
0 commit comments