Skip to content

Commit

Permalink
MDEV-8399 - [PATCH] Missing Sanity Checks for memory allocation in Ma…
Browse files Browse the repository at this point in the history
…riaDB

- since param is quite small store it on stack
- fixed a few memory leaks
  • Loading branch information
Sergey Vojtovich committed Jul 23, 2015
1 parent cb3a71d commit d897015
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 10 deletions.
12 changes: 7 additions & 5 deletions mysys/thr_alarm.c
Original file line number Diff line number Diff line change
Expand Up @@ -694,7 +694,7 @@ static void *test_thread(void *arg)
thread_count--;
mysql_cond_signal(&COND_thread_count); /* Tell main we are ready */
mysql_mutex_unlock(&LOCK_thread_count);
free((uchar*) arg);
my_thread_end();
return 0;
}

Expand Down Expand Up @@ -771,7 +771,7 @@ int main(int argc __attribute__((unused)),char **argv __attribute__((unused)))
{
pthread_t tid;
pthread_attr_t thr_attr;
int i,*param,error;
int i, param[2], error;
sigset_t set;
ALARM_INFO alarm_info;
MY_INIT(argv[0]);
Expand Down Expand Up @@ -815,12 +815,11 @@ int main(int argc __attribute__((unused)),char **argv __attribute__((unused)))
printf("Main thread: %s\n",my_thread_name());
for (i=0 ; i < 2 ; i++)
{
param=(int*) malloc(sizeof(int));
*param= i;
param[i]= i;
mysql_mutex_lock(&LOCK_thread_count);
if ((error= mysql_thread_create(0,
&tid, &thr_attr, test_thread,
(void*) param)))
(void*) &param[i])))
{
printf("Can't create thread %d, error: %d\n",i,error);
exit(1);
Expand Down Expand Up @@ -851,6 +850,9 @@ int main(int argc __attribute__((unused)),char **argv __attribute__((unused)))
alarm_info.active_alarms, alarm_info.max_used_alarms,
alarm_info.next_alarm_time);
printf("Test succeeded\n");
mysql_cond_destroy(&COND_thread_count);
mysql_mutex_destroy(&LOCK_thread_count);
my_end(MY_CHECK_ERROR);
return 0;
}

Expand Down
12 changes: 7 additions & 5 deletions mysys/thr_lock.c
Original file line number Diff line number Diff line change
Expand Up @@ -1726,7 +1726,7 @@ static void *test_thread(void *arg)
thread_count--;
mysql_cond_signal(&COND_thread_count); /* Tell main we are ready */
mysql_mutex_unlock(&LOCK_thread_count);
free((uchar*) arg);
my_thread_end();
return 0;
}

Expand All @@ -1735,7 +1735,7 @@ int main(int argc __attribute__((unused)),char **argv __attribute__((unused)))
{
pthread_t tid;
pthread_attr_t thr_attr;
int *param,error;
int param[array_elements(lock_counts)], error;
uint i;
MY_INIT(argv[0]);
if (argc > 1 && argv[1][0] == '-' && argv[1][1] == '#')
Expand Down Expand Up @@ -1791,8 +1791,7 @@ int main(int argc __attribute__((unused)),char **argv __attribute__((unused)))
#endif
for (i=0 ; i < array_elements(lock_counts) ; i++)
{
param=(int*) malloc(sizeof(int));
*param=i;
param[i]= i;

if ((error= mysql_mutex_lock(&LOCK_thread_count)))
{
Expand All @@ -1802,7 +1801,7 @@ int main(int argc __attribute__((unused)),char **argv __attribute__((unused)))
}
if ((error= mysql_thread_create(0,
&tid, &thr_attr, test_thread,
(void*) param)))
(void*) &param[i])))
{
fprintf(stderr, "Got error: %d from mysql_thread_create (errno: %d)\n",
error, errno);
Expand Down Expand Up @@ -1831,6 +1830,9 @@ int main(int argc __attribute__((unused)),char **argv __attribute__((unused)))
else
#endif
printf("Test succeeded\n");
mysql_cond_destroy(&COND_thread_count);
mysql_mutex_destroy(&LOCK_thread_count);
my_end(MY_CHECK_ERROR);
return 0;
}

Expand Down

0 comments on commit d897015

Please sign in to comment.