summaryrefslogtreecommitdiff
path: root/pysnmp/proto
diff options
context:
space:
mode:
authorelie <elie>2013-09-14 22:12:20 +0000
committerelie <elie>2013-09-14 22:12:20 +0000
commit9addab3c7b7cc7af10b6e4e8ee95ff19b8872002 (patch)
tree10a39709037afdce67f692357332abb53293ff97 /pysnmp/proto
parent921aa73f4fdb937b99d0ebf5200f53a1f5cef571 (diff)
downloadpysnmp-9addab3c7b7cc7af10b6e4e8ee95ff19b8872002.tar.gz
gracefully handle malformed SnmpEngineID coming from SNMPv3 header
Diffstat (limited to 'pysnmp/proto')
-rw-r--r--pysnmp/proto/secmod/rfc3414/service.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/pysnmp/proto/secmod/rfc3414/service.py b/pysnmp/proto/secmod/rfc3414/service.py
index 33e29e6..c50fc17 100644
--- a/pysnmp/proto/secmod/rfc3414/service.py
+++ b/pysnmp/proto/secmod/rfc3414/service.py
@@ -329,6 +329,13 @@ class SnmpUSMSecurityModel(AbstractSecurityModel):
errorIndication = errind.unknownSecurityName
)
debug.logger & debug.flagSM and debug.logger('__generateRequestOrResponseMsg: clone user info')
+ except PyAsn1Error:
+ debug.logger & debug.flagSM and debug.logger('processIncomingMsg: %s' % (sys.exc_info()[1],))
+ snmpInGenErrs, = snmpEngine.msgAndPduDsp.mibInstrumController.mibBuilder.importSymbols('__SNMPv2-MIB', 'snmpInGenErrs')
+ snmpInGenErrs.syntax = snmpInGenErrs.syntax + 1
+ raise error.StatusInformation(
+ errorIndication=errind.invalidMsg
+ )
else:
# empty username used for engineID discovery
usmUserName = usmUserSecurityName = null
@@ -717,6 +724,13 @@ class SnmpUSMSecurityModel(AbstractSecurityModel):
contextName=contextName,
maxSizeResponseScopedPDU=maxSizeResponseScopedPDU
)
+ except PyAsn1Error:
+ debug.logger & debug.flagSM and debug.logger('processIncomingMsg: %s' % (sys.exc_info()[1],))
+ snmpInGenErrs, = snmpEngine.msgAndPduDsp.mibInstrumController.mibBuilder.importSymbols('__SNMPv2-MIB', 'snmpInGenErrs')
+ snmpInGenErrs.syntax = snmpInGenErrs.syntax + 1
+ raise error.StatusInformation(
+ errorIndication=errind.invalidMsg
+ )
else:
# empty username used for engineID discovery
usmUserName = usmUserSecurityName = null