summaryrefslogtreecommitdiff
path: root/pysnmp/proto
diff options
context:
space:
mode:
authorelie <elie>2013-06-10 22:36:05 +0000
committerelie <elie>2013-06-10 22:36:05 +0000
commitb1b008d452938a7b75d55a836f70b3c3337df4ae (patch)
tree1d62bf71dd5b40fa2382d617a265a59488453c65 /pysnmp/proto
parent000ddff27b8a8c5bbc54ee36b31dedeca5ddde20 (diff)
downloadpysnmp-b1b008d452938a7b75d55a836f70b3c3337df4ae.tar.gz
Fix to SnmpUSMSecurityModel._sec2usr() - raise NoSuchInstance error
to emulate MIB lookup failure. Previous version of the code always succeeded returning securityName on failure. That screwed new row creation logic.
Diffstat (limited to 'pysnmp/proto')
-rw-r--r--pysnmp/proto/secmod/rfc3414/service.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/pysnmp/proto/secmod/rfc3414/service.py b/pysnmp/proto/secmod/rfc3414/service.py
index 41f64f9..e4bd1be 100644
--- a/pysnmp/proto/secmod/rfc3414/service.py
+++ b/pysnmp/proto/secmod/rfc3414/service.py
@@ -56,6 +56,7 @@ class SnmpUSMSecurityModel(AbstractSecurityModel):
self.__securityToUserMap = {}
nextMibNode = usmUserEngineID
+
while 1:
try:
nextMibNode = usmUserEngineID.getNextNode(
@@ -82,9 +83,11 @@ class SnmpUSMSecurityModel(AbstractSecurityModel):
snmpEngineID, = snmpEngine.msgAndPduDsp.mibInstrumController.mibBuilder.importSymbols('__SNMP-FRAMEWORK-MIB', 'snmpEngineID')
securityEngineID = snmpEngineID.syntax
- userName = self.__securityToUserMap.get(
- (securityEngineID, securityName), securityName
- )
+ try:
+ userName = self.__securityToUserMap[(securityEngineID, securityName)]
+ except KeyError:
+ debug.logger & debug.flagSM and debug.logger('_sec2usr: no entry exists for snmpEngineId %r, securityName %r' % (securityEngineID, securityName))
+ raise NoSuchInstanceError() # emulate MIB lookup
debug.logger & debug.flagSM and debug.logger('_sec2usr: using userName %r for snmpEngineId %r, securityName %r' % (userName, securityEngineID, securityName))