Fix theoretical buffer overflow issues in snmp_oid2asn_oid
Increase the size of `string` by 1 to account for the '\0' terminator. In the event that `str` doesn't contain any non-alpha chars, i would be set to MAXSTR, and the subsequent strlcpy call would overflow by a character. Remove unnecessary `string[i] = '\0'` -- this is already handled by strlcpy. MFC after: 1 week Reported by: clang Sponsored by: EMC / Isilon Storage Division
This commit is contained in:
parent
78a780e3e5
commit
81910adfc4
@ -1060,7 +1060,7 @@ snmp_oid2asn_oid(struct snmp_toolinfo *snmptoolctx, char *str,
|
|||||||
struct asn_oid *oid)
|
struct asn_oid *oid)
|
||||||
{
|
{
|
||||||
int32_t i;
|
int32_t i;
|
||||||
char string[MAXSTR], *endptr;
|
char string[MAXSTR + 1], *endptr;
|
||||||
struct snmp_object obj;
|
struct snmp_object obj;
|
||||||
|
|
||||||
for (i = 0; i < MAXSTR; i++)
|
for (i = 0; i < MAXSTR; i++)
|
||||||
@ -1076,7 +1076,6 @@ snmp_oid2asn_oid(struct snmp_toolinfo *snmptoolctx, char *str,
|
|||||||
return (NULL);
|
return (NULL);
|
||||||
} else {
|
} else {
|
||||||
strlcpy(string, str, i + 1);
|
strlcpy(string, str, i + 1);
|
||||||
string[i] = '\0';
|
|
||||||
if (snmp_lookup_enumoid(snmptoolctx, &obj, string) < 0) {
|
if (snmp_lookup_enumoid(snmptoolctx, &obj, string) < 0) {
|
||||||
warnx("Unknown string - %s", string);
|
warnx("Unknown string - %s", string);
|
||||||
return (NULL);
|
return (NULL);
|
||||||
|
Loading…
Reference in New Issue
Block a user