Fix community string length copying - correctly handle long strings

This commit is contained in:
Dirk Ziegelmeier 2017-03-30 11:09:35 +02:00
parent 8d149e63a6
commit 2673e635a3

View File

@ -821,8 +821,9 @@ snmp_parse_inbound_frame(struct snmp_request *request)
/* SNMPv3 doesn't use communities */
/* @todo: Differentiate read/write access */
strncpy((char*)request->community, snmp_community, sizeof(request->community));
request->community_strlen = (u16_t)strnlen((char*)request->community, sizeof(request->community));
strncpy((char*)request->community, snmp_community, SNMP_MAX_COMMUNITY_STR_LEN);
request->community[SNMP_MAX_COMMUNITY_STR_LEN] = 0; /* ensure NULL termination (strncpy does NOT guarantee it!) */
request->community_strlen = (u16_t)strnlen((char*)request->community, SNMP_MAX_COMMUNITY_STR_LEN);
/* RFC3414 globalData */
IF_PARSE_EXEC(snmp_asn1_dec_tlv(&pbuf_stream, &tlv));