diff --git a/server/core/config.c b/server/core/config.c index 2c51349f9..75c65007c 100644 --- a/server/core/config.c +++ b/server/core/config.c @@ -2528,6 +2528,7 @@ config_get_ifaddr(unsigned char *output) { memcpy(output, ifr.ifr_hwaddr.sa_data, 6); } + close(sock); return success; } diff --git a/server/core/dbusers.c b/server/core/dbusers.c index a76f3f498..f1a67ff4c 100644 --- a/server/core/dbusers.c +++ b/server/core/dbusers.c @@ -2343,29 +2343,30 @@ static void * dbusers_keyread(int fd) { MYSQL_USER_HOST *dbkey; - int tmp; if ((dbkey = (MYSQL_USER_HOST *) malloc(sizeof(MYSQL_USER_HOST))) == NULL) { return NULL; } - if (read(fd, &tmp, sizeof(tmp)) != sizeof(tmp)) + + int user_size; + if (read(fd, &user_size, sizeof(user_size)) != sizeof(user_size)) { free(dbkey); return NULL; } - if ((dbkey->user = (char *) malloc(tmp + 1)) == NULL) + if ((dbkey->user = (char *) malloc(user_size + 1)) == NULL) { free(dbkey); return NULL; } - if (read(fd, dbkey->user, tmp) != tmp) + if (read(fd, dbkey->user, user_size) != user_size) { free(dbkey->user); free(dbkey); return NULL; } - dbkey->user[tmp] = 0; // NULL Terminate + dbkey->user[user_size] = 0; // NULL Terminate if (read(fd, &dbkey->ipv4, sizeof(dbkey->ipv4)) != sizeof(dbkey->ipv4)) { free(dbkey->user); @@ -2378,28 +2379,30 @@ dbusers_keyread(int fd) free(dbkey); return NULL; } - if (read(fd, &tmp, sizeof(tmp)) != sizeof(tmp)) + + int res_size; + if (read(fd, &res_size, sizeof(res_size)) != sizeof(res_size)) { free(dbkey->user); free(dbkey); return NULL; } - if (tmp != -1) + else if (res_size != -1) { - if ((dbkey->resource = (char *) malloc(tmp + 1)) == NULL) + if ((dbkey->resource = (char *) malloc(res_size + 1)) == NULL) { free(dbkey->user); free(dbkey); return NULL; } - if (read(fd, dbkey->resource, tmp) != tmp) + if (read(fd, dbkey->resource, res_size) != res_size) { free(dbkey->resource); free(dbkey->user); free(dbkey); return NULL; } - dbkey->resource[tmp] = 0; // NULL Terminate + dbkey->resource[res_size] = 0; // NULL Terminate } else // NULL is valid, so represent with a length of -1 { diff --git a/server/core/dcb.c b/server/core/dcb.c index a4d63d7e9..322a27163 100644 --- a/server/core/dcb.c +++ b/server/core/dcb.c @@ -643,6 +643,9 @@ dcb_process_victim_queue(DCB *listofdcb) } else { +#if defined(FAKE_CODE) + conn_open[dcb->fd] = false; +#endif /* FAKE_CODE */ dcb->fd = DCBFD_CLOSED; MXS_DEBUG("%lu [dcb_process_victim_queue] Closed socket " @@ -650,9 +653,6 @@ dcb_process_victim_queue(DCB *listofdcb) pthread_self(), dcb->fd, dcb); -#if defined(FAKE_CODE) - conn_open[dcb->fd] = false; -#endif /* FAKE_CODE */ } } diff --git a/server/core/gateway.c b/server/core/gateway.c index d90b7d48f..5aadda73f 100644 --- a/server/core/gateway.c +++ b/server/core/gateway.c @@ -1024,7 +1024,7 @@ int main(int argc, char **argv) int n_services; int eno = 0; /*< local variable for errno */ int opt; - int daemon_pipe[2]; + int daemon_pipe[2] = {-1, -1}; bool parent_process; int child_status; void** threads = NULL; /*< thread list */ diff --git a/server/modules/filter/mqfilter.c b/server/modules/filter/mqfilter.c index 0ca8c01ef..d46d340c3 100644 --- a/server/modules/filter/mqfilter.c +++ b/server/modules/filter/mqfilter.c @@ -502,7 +502,7 @@ createInstance(char **options, FILTER_PARAMETER **params) MQ_INSTANCE *my_instance; int paramcount = 0, parammax = 64, i = 0, x = 0, arrsize = 0; FILTER_PARAMETER** paramlist; - char** arr; + char** arr = NULL; char taskname[512]; if ((my_instance = calloc(1, sizeof(MQ_INSTANCE)))) @@ -514,6 +514,8 @@ createInstance(char **options, FILTER_PARAMETER **params) if ((my_instance->conn = amqp_new_connection()) == NULL) { + free(paramlist); + free(my_instance); return NULL; } my_instance->channel = 1; @@ -610,6 +612,10 @@ createInstance(char **options, FILTER_PARAMETER **params) if (arrsize > 0) { + for (int x = 0; x < arrsize; x++) + { + free(arr[x]); + } free(arr); } arrsize = 0; @@ -777,7 +783,11 @@ createInstance(char **options, FILTER_PARAMETER **params) snprintf(taskname, 511, "mqtask%d", atomic_add(&hktask_id, 1)); hktask_add(taskname, sendMessage, (void*) my_instance, 5); - + for (int x = 0; x < arrsize; x++) + { + free(arr[x]); + } + free(arr); } return(FILTER *) my_instance; } @@ -834,7 +844,7 @@ void sendMessage(void* data) { MQ_INSTANCE *instance = (MQ_INSTANCE*) data; mqmessage *tmp; - int err_num; + int err_num = AMQP_STATUS_OK; spinlock_acquire(&instance->rconn_lock); if (instance->conn_stat != AMQP_STATUS_OK) diff --git a/server/modules/protocol/httpd.c b/server/modules/protocol/httpd.c index 042a20366..28ebdae10 100644 --- a/server/modules/protocol/httpd.c +++ b/server/modules/protocol/httpd.c @@ -360,6 +360,10 @@ int n_connect = 0; } n_connect++; } + else + { + close(so); + } } } diff --git a/server/modules/routing/maxinfo/maxinfo_parse.c b/server/modules/routing/maxinfo/maxinfo_parse.c index e63d6b2cf..86dacdfa7 100644 --- a/server/modules/routing/maxinfo/maxinfo_parse.c +++ b/server/modules/routing/maxinfo/maxinfo_parse.c @@ -156,6 +156,7 @@ MAXINFO_TREE *col, *table; { /** Unknown token after RESTART MONITOR|SERVICE */ *parse_error = PARSE_SYNTAX_ERROR; + free(text); free_tree(tree); return NULL; } @@ -376,7 +377,10 @@ int i; } if (s1 == s2) + { + *text = NULL; return NULL; + } *text = strndup(s1, s2 - s1); for (i = 0; keywords[i].text; i++) diff --git a/server/modules/routing/schemarouter/schemarouter.c b/server/modules/routing/schemarouter/schemarouter.c index 4e5daaf4a..f5364155c 100644 --- a/server/modules/routing/schemarouter/schemarouter.c +++ b/server/modules/routing/schemarouter/schemarouter.c @@ -1254,7 +1254,7 @@ static void* newSession( if(db[0] != 0x0) { /* Store the database the client is connecting to */ - strncpy(client_rses->connect_db,db,MYSQL_DATABASE_MAXLEN+1); + snprintf(client_rses->connect_db, MYSQL_DATABASE_MAXLEN + 1, "%s", db); } @@ -3797,7 +3797,7 @@ static bool route_session_write( unsigned char packet_type, skygw_query_type_t qtype) { - bool succp; + bool succp = false; rses_property_t* prop; backend_ref_t* backend_ref; int i; diff --git a/server/modules/routing/schemarouter/shardrouter.c b/server/modules/routing/schemarouter/shardrouter.c index b2d65d7d7..8b49c88d6 100644 --- a/server/modules/routing/schemarouter/shardrouter.c +++ b/server/modules/routing/schemarouter/shardrouter.c @@ -1497,7 +1497,7 @@ gen_show_dbs_response(ROUTER_INSTANCE* router, ROUTER_CLIENT_SES* client) rval = gwbuf_append(rval, last_packet); rval = gwbuf_make_contiguous(rval); - + hashtable_iterator_free(iter); return rval; }