Skip to content

Commit dc8ded6

Browse files
authored
Fix missing SNMPv1 instance values (#24)
1 parent 14be639 commit dc8ded6

3 files changed

Lines changed: 16 additions & 0 deletions

File tree

‎netsnmp/client_intf.c‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1623,6 +1623,9 @@ netsnmp_get(PyObject *self, PyObject *args)
16231623
vars && (varlist_ind < varlist_len);
16241624
vars = vars->next_variable, varlist_ind++) {
16251625

1626+
if (err_ind >= 1 && varlist_ind >= err_ind - 1)
1627+
continue;
1628+
16261629
varbind = PySequence_GetItem(varlist, varlist_ind);
16271630

16281631
if (PyObject_HasAttrString(varbind, "tag")) {

‎netsnmp/tests/system/test_errors.py‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,12 @@ def test_unknown_oid_returns_no_value(self):
3030
self.assertEqual(values, (None,))
3131
self.assertIn(varbind.type, ('NOSUCHOBJECT', 'NOSUCHINSTANCE'))
3232

33+
def test_unknown_instance_returns_no_value(self):
34+
varbind = netsnmp.Varbind(SYS_DESCR, '123')
35+
36+
self.assertEqual(netsnmp.snmpget(varbind, **READ_ARGS), (None,))
37+
self.assertEqual(varbind.type, 'NOSUCHINSTANCE')
38+
3339
def test_read_only_set_is_rejected(self):
3440
session = netsnmp.Session(**READ_ARGS)
3541
varlist = netsnmp.VarList(

‎netsnmp/tests/system/test_v1.py‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,13 @@ def test_get(self):
2424
netsnmp.Varbind(SYS_DESCR, '0'), **V1_READ_ARGS)
2525
assert_value(self, values)
2626

27+
def test_get_unknown_instance_returns_no_value(self):
28+
varbind = netsnmp.Varbind(SYS_DESCR, '123')
29+
30+
self.assertEqual(netsnmp.snmpget(varbind, **V1_READ_ARGS), (None,))
31+
self.assertIsNone(varbind.val)
32+
self.assertIsNone(varbind.type)
33+
2734
def test_getnext(self):
2835
values = netsnmp.snmpgetnext(
2936
netsnmp.Varbind(SYSTEM), **V1_READ_ARGS)

0 commit comments

Comments
 (0)