diff --git a/query_classifier/test/classify.c b/query_classifier/test/classify.c index 0555844c9..5ceadea9c 100644 --- a/query_classifier/test/classify.c +++ b/query_classifier/test/classify.c @@ -34,7 +34,7 @@ int main(int argc, char** argv) return 1; } int rd = 0,buffsz = getpagesize(),strsz = 0,ex_val = 0; - char buffer[buffsz], *strbuff = (char*)calloc(buffsz,sizeof(char)); + char buffer[1024], *strbuff = (char*)calloc(buffsz,sizeof(char)); FILE *input,*expected; if(mysql_library_init(num_elements, server_options, server_groups)) @@ -45,25 +45,30 @@ int main(int argc, char** argv) input = fopen(argv[1],"rb"); expected = fopen(argv[2],"rb"); - memset(buffer,0,buffsz); - while((rd = fread(buffer,sizeof(char),buffsz - 1,input))){ + + while((rd = fread(buffer,sizeof(char),1023,input))){ /**Fill the read buffer*/ + if(strsz + rd >= buffsz){ - char* tmp = (char*)calloc((buffsz*2),sizeof(char)); + + char* tmp = realloc(strbuff,(buffsz*2)*sizeof(char)); - if(!tmp){ - fprintf(stderr,"Error: Cannot allocate enough memory."); + if(tmp == NULL){ + free(strbuff); + fclose(input); + fclose(expected); + mysql_library_end(); + fprintf(stderr,"Error: Memory allocation failed."); return 1; } - memcpy(tmp,strbuff,buffsz); - free(strbuff); strbuff = tmp; buffsz *= 2; } memcpy(strbuff+strsz,buffer,rd); strsz += rd; + *(strbuff+strsz) = '\0'; char *tok,*nlptr; @@ -167,10 +172,10 @@ int main(int argc, char** argv) gwbuf_free(buff); } - memset(buffer,0,buffsz); } fclose(input); fclose(expected); + mysql_library_end(); free(strbuff); return ex_val; } diff --git a/server/core/test/testadminusers.c b/server/core/test/testadminusers.c index eb2ee8e40..ec2917783 100644 --- a/server/core/test/testadminusers.c +++ b/server/core/test/testadminusers.c @@ -269,7 +269,7 @@ int result = 0; char *home, buf[1024]; /* Unlink any existing password file before running this test */ - if ((home = getenv("MAXSCALE_HOME")) == NULL) + if ((home = getenv("MAXSCALE_HOME")) == NULL || strlen(home) >= 1024) home = "/usr/local/skysql"; sprintf(buf, "%s/etc/passwd", home); if (strcmp(buf, "/etc/passwd") != 0) diff --git a/server/core/test/testhash.c b/server/core/test/testhash.c index 9fc2fb9cf..89720da80 100644 --- a/server/core/test/testhash.c +++ b/server/core/test/testhash.c @@ -158,6 +158,7 @@ static bool do_hashtest( hashtable_free(h); return_succp: + free(val_arr); return succp; } diff --git a/server/core/test/testhint.c b/server/core/test/testhint.c index 3ec5d9953..0f46e915b 100644 --- a/server/core/test/testhint.c +++ b/server/core/test/testhint.c @@ -46,7 +46,9 @@ HINT *hint; /* Hint tests */ ss_dfprintf(stderr, "testhint : Add a parameter hint to a null list"); - hint = hint_create_parameter(NULL, strdup("name"), "value"); + char* name = strdup("name"); + hint = hint_create_parameter(NULL, name, "value"); + free(name); ss_info_dassert(NULL != hint, "New hint list should not be null"); ss_info_dassert(0 == strcmp("value", hint->value), "Hint value should be correct"); ss_info_dassert(0 != hint_exists(&hint, HINT_PARAMETER), "Hint of parameter type should exist"); diff --git a/server/core/test/testserver.c b/server/core/test/testserver.c index b1065ace0..5d4d130a8 100644 --- a/server/core/test/testserver.c +++ b/server/core/test/testserver.c @@ -68,7 +68,8 @@ char *status; server_set_status(server, SERVER_MASTER); status = server_status(server); ss_info_dassert(0 == strcmp("Master, Running", status), "Should find correct status."); - server_clear_status(server, SERVER_MASTER); + server_clear_status(server, SERVER_MASTER); + free(status); status = server_status(server); ss_info_dassert(0 == strcmp("Running", status), "Status of Server should be Running after master status cleared."); if (NULL != status) free(status); @@ -78,7 +79,6 @@ char *status; ss_dfprintf(stderr, "\t..done\nFreeing Server."); ss_info_dassert(0 != server_free(server), "Free should succeed"); ss_dfprintf(stderr, "\t..done\n"); - return 0; } diff --git a/server/modules/filter/test/harness_common.c b/server/modules/filter/test/harness_common.c index a247bc54a..28dfb5f47 100644 --- a/server/modules/filter/test/harness_common.c +++ b/server/modules/filter/test/harness_common.c @@ -953,6 +953,7 @@ int process_opts(int argc, char** argv) instance.verbose = 1; if(argc < 2){ + close(fd); return 1; } char* conf_name = NULL; @@ -970,6 +971,9 @@ int process_opts(int argc, char** argv) break; case 'c': + if(conf_name){ + free(conf_name); + } conf_name = strdup(optarg); break; diff --git a/server/modules/routing/readwritesplit/readwritesplit.c b/server/modules/routing/readwritesplit/readwritesplit.c index 5e1d7a407..e7f003d04 100644 --- a/server/modules/routing/readwritesplit/readwritesplit.c +++ b/server/modules/routing/readwritesplit/readwritesplit.c @@ -1525,15 +1525,12 @@ skygw_query_type_t is_read_tmp_table( } } - if(tsize > 0) + for(i = 0; i