From 9d1234d83adcfddce2fcb4eb4bec8cebd37eb03b Mon Sep 17 00:00:00 2001 From: Dirk Ziegelmeier Date: Thu, 31 Dec 2015 16:19:26 +0100 Subject: [PATCH] Add some comments and OID checks to udpEndpointTable --- src/apps/snmp/snmp_mib2.c | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/apps/snmp/snmp_mib2.c b/src/apps/snmp/snmp_mib2.c index d155f1dc..b9e31d38 100644 --- a/src/apps/snmp/snmp_mib2.c +++ b/src/apps/snmp/snmp_mib2.c @@ -2048,23 +2048,42 @@ udp_ep_Table_get_cell_value(const u32_t* column, const u32_t* row_oid, u8_t row_ LWIP_UNUSED_ARG(value_len); + /* udpEndpointLocalAddressType + udpEndpointLocalAddress */ index += snmp_oid_to_ip(&row_oid[index], row_oid_len-index, &local_ip); if(index == 0) { return SNMP_ERR_NOSUCHINSTANCE; } - /* @todo: OID length check + range check */ + + /* udpEndpointLocalPort */ + if(row_oid_len < (index+1)) { + return SNMP_ERR_NOSUCHINSTANCE; + } + if(row_oid[index] > 0xffff) { + return SNMP_ERR_NOSUCHINSTANCE; + } local_port = (u16_t)row_oid[index]; index++; + /* udpEndpointRemoteAddressType + udpEndpointRemoteAddress */ index += snmp_oid_to_ip(&row_oid[index], row_oid_len-index, &remote_ip); if(index == 0) { return SNMP_ERR_NOSUCHINSTANCE; } - /* @todo: OID length check + range check */ + + /* udpEndpointRemotePort */ + if(row_oid_len < (index+1)) { + return SNMP_ERR_NOSUCHINSTANCE; + } + if(row_oid[index] > 0xffff) { + return SNMP_ERR_NOSUCHINSTANCE; + } remote_port = (u16_t)row_oid[index]; index++; - /* check udpEndpointInstance */ + /* udpEndpointInstance */ + if(row_oid_len < (index+1)) { + return SNMP_ERR_NOSUCHINSTANCE; + } if(row_oid[index] != 0) { return SNMP_ERR_NOSUCHINSTANCE; }