You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Execution is hitting a Python exception when corrupt SNMP data is received.
Is it possible to make it defensive here? This isn't happening frequently so I am unable to regenerate it.
Trace:
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: Traceback (most recent call last):
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: File "/usr/lib/preseem/netpoll/snmp_client.py", line 241, in snmp_walk2
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: async for x in rows:
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: File "/usr/local/lib/python3.9/site-packages/puresnmp/aio/api/raw.py", line 216, in walk
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: async for varbind in gen:
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: File "/usr/local/lib/python3.9/site-packages/puresnmp/aio/api/raw.py", line 265, in multiwalk
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: varbinds = await fetcher(
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: File "/usr/local/lib/python3.9/site-packages/puresnmp/aio/api/raw.py", line 164, in multigetnext
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: Sequence.from_bytes(response)
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: File "/usr/local/lib/python3.9/site-packages/puresnmp/x690/types.py", line 169, in from_bytes
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: return cls.decode(data)
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: File "/usr/local/lib/python3.9/site-packages/puresnmp/x690/types.py", line 382, in decode
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: value, data = pop_tlv(data)
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: File "/usr/local/lib/python3.9/site-packages/puresnmp/x690/types.py", line 117, in pop_tlv
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: value = cls.from_bytes(chunk)
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: File "/usr/local/lib/python3.9/site-packages/puresnmp/x690/types.py", line 169, in from_bytes
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: return cls.decode(data)
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: File "/usr/local/lib/python3.9/site-packages/puresnmp/pdu.py", line 222, in decode
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: return super(GetResponse, cls).decode(data)
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: File "/usr/local/lib/python3.9/site-packages/puresnmp/pdu.py", line 74, in decode
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: offending_oid = varbinds[error_index.value-1].oid
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: IndexError: list index out of range
Code Snippet: /puresnmp/pdu.py
63 if error_status.value:
64 error_detail, data = cast(
65 Tuple[Iterable[Tuple[ObjectIdentifier, int]], bytes],
66 pop_tlv(data)
67 )
68 if not isinstance(error_detail, Sequence):
69 raise TypeError(
70 'error-detail should be a sequence but got %r' %
71 type(error_detail))
72 varbinds = [VarBind(*raw_varbind) for raw_varbind in error_detail]
73 if error_index.value != 0:
74 offending_oid = varbinds[error_index.value-1].oid
75 else:
76 # Offending OID is unknown
77 offending_oid = None
78 assert data == b''
79 exception = ErrorResponse.construct(
80 error_status.value, offending_oid)
81 raise exception
The text was updated successfully, but these errors were encountered:
Issue Description:
Execution is hitting a Python exception when corrupt SNMP data is received.
Is it possible to make it defensive here? This isn't happening frequently so I am unable to regenerate it.
Trace:
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: Traceback (most recent call last):
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: File "/usr/lib/preseem/netpoll/snmp_client.py", line 241, in snmp_walk2
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: async for x in rows:
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: File "/usr/local/lib/python3.9/site-packages/puresnmp/aio/api/raw.py", line 216, in walk
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: async for varbind in gen:
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: File "/usr/local/lib/python3.9/site-packages/puresnmp/aio/api/raw.py", line 265, in multiwalk
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: varbinds = await fetcher(
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: File "/usr/local/lib/python3.9/site-packages/puresnmp/aio/api/raw.py", line 164, in multigetnext
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: Sequence.from_bytes(response)
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: File "/usr/local/lib/python3.9/site-packages/puresnmp/x690/types.py", line 169, in from_bytes
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: return cls.decode(data)
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: File "/usr/local/lib/python3.9/site-packages/puresnmp/x690/types.py", line 382, in decode
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: value, data = pop_tlv(data)
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: File "/usr/local/lib/python3.9/site-packages/puresnmp/x690/types.py", line 117, in pop_tlv
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: value = cls.from_bytes(chunk)
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: File "/usr/local/lib/python3.9/site-packages/puresnmp/x690/types.py", line 169, in from_bytes
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: return cls.decode(data)
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: File "/usr/local/lib/python3.9/site-packages/puresnmp/pdu.py", line 222, in decode
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: return super(GetResponse, cls).decode(data)
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: File "/usr/local/lib/python3.9/site-packages/puresnmp/pdu.py", line 74, in decode
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: offending_oid = varbinds[error_index.value-1].oid
Dec 08 19:20:34 preseem-5000-ks preseem-network-poller[878059]: IndexError: list index out of range
Code Snippet: /puresnmp/pdu.py
The text was updated successfully, but these errors were encountered: