app/test: fix sprintf with strlcat
sprintf function is not secure as it doesn't check the length of string.
More secure function strlcat is used.
Fixes: 727909c592
("app/test: introduce dynamic commands list")
Cc: stable@dpdk.org
Signed-off-by: Pallantla Poornima <pallantlax.poornima@intel.com>
Reviewed-by: Aaron Conole <aconole@redhat.com>
This commit is contained in:
parent
c12cefa379
commit
323643727f
@ -44,6 +44,7 @@
|
||||
#include <cmdline_parse_num.h>
|
||||
#include <cmdline_parse_string.h>
|
||||
#include <cmdline.h>
|
||||
#include <rte_string_fns.h>
|
||||
|
||||
#include "test.h"
|
||||
|
||||
@ -365,23 +366,22 @@ cmdline_parse_ctx_t main_ctx[] = {
|
||||
int commands_init(void)
|
||||
{
|
||||
struct test_command *t;
|
||||
char *commands, *ptr;
|
||||
char *commands;
|
||||
int commands_len = 0;
|
||||
|
||||
TAILQ_FOREACH(t, &commands_list, next) {
|
||||
commands_len += strlen(t->command) + 1;
|
||||
}
|
||||
|
||||
commands = malloc(commands_len + 1);
|
||||
commands = (char *)calloc(commands_len, sizeof(char));
|
||||
if (!commands)
|
||||
return -1;
|
||||
|
||||
ptr = commands;
|
||||
TAILQ_FOREACH(t, &commands_list, next) {
|
||||
ptr += sprintf(ptr, "%s#", t->command);
|
||||
strlcat(commands, t->command, commands_len);
|
||||
if (TAILQ_NEXT(t, next) != NULL)
|
||||
strlcat(commands, "#", commands_len);
|
||||
}
|
||||
ptr--;
|
||||
ptr[0] = '\0';
|
||||
|
||||
cmd_autotest_autotest.string_data.str = commands;
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user