X-Git-Url: https://git.octo.it/?p=collectd.git;a=blobdiff_plain;f=src%2Fsnmp_agent.c;h=aeb01587c997a2073a0df4c3e39e26a19fd1e9b1;hp=3c042a868d0e686271dfcf6b6c9640a866dff58e;hb=383df7c4409738283ac2cd8d972104353ddbd54c;hpb=655acd5a11d405b0fae8f2921de8216336825e90 diff --git a/src/snmp_agent.c b/src/snmp_agent.c index 3c042a86..aeb01587 100644 --- a/src/snmp_agent.c +++ b/src/snmp_agent.c @@ -383,11 +383,20 @@ static int snmp_agent_create_token(char const *input, int t_off, int n, int ret = 0; token->key = index_key; - token->str = strndup(input + t_off, n); + /* copy at most n bytes from input with offset t_off into token->str */ + input += t_off; + size_t len = strlen(input); + if (n < len) + len = n; + + token->str = malloc(len + 1); if (token->str == NULL) goto free_offset_error; + memcpy(token->str, input, len); + token->str[len] = '\0'; + *offset = t_off; ret = c_avl_insert(tree, (void *)offset, (void *)token);