diff options
author | elie <elie> | 2013-09-14 22:12:20 +0000 |
---|---|---|
committer | elie <elie> | 2013-09-14 22:12:20 +0000 |
commit | 9addab3c7b7cc7af10b6e4e8ee95ff19b8872002 (patch) | |
tree | 10a39709037afdce67f692357332abb53293ff97 /pysnmp/proto | |
parent | 921aa73f4fdb937b99d0ebf5200f53a1f5cef571 (diff) | |
download | pysnmp-9addab3c7b7cc7af10b6e4e8ee95ff19b8872002.tar.gz |
gracefully handle malformed SnmpEngineID coming from SNMPv3 header
Diffstat (limited to 'pysnmp/proto')
-rw-r--r-- | pysnmp/proto/secmod/rfc3414/service.py | 14 |
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 |