snmp_agent: Replace strndup() with internal implementation
authorPavel Rochnyack <pavel2000@ngs.ru>
Tue, 19 Jun 2018 04:11:09 +0000 (11:11 +0700)
committerPavel Rochnyack <pavel2000@ngs.ru>
Tue, 19 Jun 2018 04:13:22 +0000 (11:13 +0700)
This adressed to fix Solaris 10 builds.

Closes: #2814

src/snmp_agent.c

index 3c042a8..aeb0158 100644 (file)
@@ -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);