X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fsnmp_agent.c;h=d65af1f19b5a2dadc2e8f7b496abd8e3da1ccc4c;hb=f71007c326f29e3fff754eba56ba275370a265b2;hp=3c042a868d0e686271dfcf6b6c9640a866dff58e;hpb=258e6aee6f33a7b5a6d21ccdca2ee50888e0ac45;p=collectd.git diff --git a/src/snmp_agent.c b/src/snmp_agent.c index 3c042a86..d65af1f1 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); @@ -522,7 +531,7 @@ static int snmp_agent_fill_index_list(table_definition_t *td, /* Parsing input string if necessary */ if (td->index_keys[i].regex) { - regmatch_t m = {-1, -1}; + regmatch_t m; /* Parsing input string */ ret = snmp_agent_parse_index_key(ptr, &td->index_keys[i].regex_info,