From 986122407a4279879094329dbfc19187f4a65faf Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Mon, 6 Feb 2012 21:59:29 -0500 Subject: [PATCH] Fix memory leak in get random string Signed-off-by: Mathieu Desnoyers --- tests/test_kernel_data_trace.c | 13 ++++++++----- tests/test_sessions.c | 12 +++++++----- tests/test_ust_data_trace.c | 13 ++++++++----- 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/tests/test_kernel_data_trace.c b/tests/test_kernel_data_trace.c index bfc0f41af..0a534699c 100644 --- a/tests/test_kernel_data_trace.c +++ b/tests/test_kernel_data_trace.c @@ -33,6 +33,8 @@ /* This path will NEVER be created in this test */ #define PATH1 "/tmp/.test-junk-lttng" +#define RANDOM_STRING_LEN 11 + /* For lttngerr.h */ int opt_quiet = 1; int opt_verbose = 0; @@ -43,22 +45,23 @@ static const char alphanum[] = "abcdefghijklmnopqrstuvwxyz"; static struct ltt_kernel_session *kern; +static char random_string[RANDOM_STRING_LEN]; /* * Return random string of 10 characters. + * Not thread-safe. */ static char *get_random_string(void) { int i; - char *str = malloc(11); - for (i = 0; i < 10; i++) { - str[i] = alphanum[rand() % (sizeof(alphanum) - 1)]; + for (i = 0; i < RANDOM_STRING_LEN - 1; i++) { + random_string[i] = alphanum[rand() % (sizeof(alphanum) - 1)]; } - str[10] = '\0'; + random_string[RANDOM_STRING_LEN - 1] = '\0'; - return str; + return random_string; } static void create_one_kernel_session(void) diff --git a/tests/test_sessions.c b/tests/test_sessions.c index f444e3043..3e876c889 100644 --- a/tests/test_sessions.c +++ b/tests/test_sessions.c @@ -37,6 +37,7 @@ #define PATH1 "/tmp/.test-junk-lttng" #define MAX_SESSIONS 10000 +#define RANDOM_STRING_LEN 11 /* * String of 263 caracters. NAME_MAX + "OVERFLOW". If OVERFLOW appears in the @@ -61,22 +62,23 @@ static const char alphanum[] = "0123456789" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz"; +static char random_string[RANDOM_STRING_LEN]; /* * Return random string of 10 characters. + * Not thread-safe. */ static char *get_random_string(void) { int i; - char *str = malloc(11); - for (i = 0; i < 10; i++) { - str[i] = alphanum[rand() % (sizeof(alphanum) - 1)]; + for (i = 0; i < RANDOM_STRING_LEN - 1; i++) { + random_string[i] = alphanum[rand() % (sizeof(alphanum) - 1)]; } - str[10] = '\0'; + random_string[RANDOM_STRING_LEN - 1] = '\0'; - return str; + return random_string; } /* diff --git a/tests/test_ust_data_trace.c b/tests/test_ust_data_trace.c index 6acd7a0d0..924cfe4b9 100644 --- a/tests/test_ust_data_trace.c +++ b/tests/test_ust_data_trace.c @@ -35,6 +35,8 @@ /* This path will NEVER be created in this test */ #define PATH1 "/tmp/.test-junk-lttng" +#define RANDOM_STRING_LEN 11 + /* For lttngerr.h */ int opt_quiet = 1; int opt_verbose = 0; @@ -43,25 +45,26 @@ static const char alphanum[] = "0123456789" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz"; +static char random_string[RANDOM_STRING_LEN]; static struct ltt_ust_session *usess; static struct lttng_domain dom; /* * Return random string of 10 characters. + * Not thread-safe. */ static char *get_random_string(void) { int i; - char *str = malloc(11); - for (i = 0; i < 10; i++) { - str[i] = alphanum[rand() % (sizeof(alphanum) - 1)]; + for (i = 0; i < RANDOM_STRING_LEN - 1; i++) { + random_string[i] = alphanum[rand() % (sizeof(alphanum) - 1)]; } - str[10] = '\0'; + random_string[RANDOM_STRING_LEN - 1] = '\0'; - return str; + return random_string; } static void create_one_ust_session(void) -- 2.34.1