Fixes to Coverity defects
Few fixes to possible use of freed memory and resource leaks.
This commit is contained in:
@ -2528,6 +2528,7 @@ config_get_ifaddr(unsigned char *output)
|
|||||||
{
|
{
|
||||||
memcpy(output, ifr.ifr_hwaddr.sa_data, 6);
|
memcpy(output, ifr.ifr_hwaddr.sa_data, 6);
|
||||||
}
|
}
|
||||||
|
close(sock);
|
||||||
|
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
@ -2343,29 +2343,30 @@ static void *
|
|||||||
dbusers_keyread(int fd)
|
dbusers_keyread(int fd)
|
||||||
{
|
{
|
||||||
MYSQL_USER_HOST *dbkey;
|
MYSQL_USER_HOST *dbkey;
|
||||||
int tmp;
|
|
||||||
|
|
||||||
if ((dbkey = (MYSQL_USER_HOST *) malloc(sizeof(MYSQL_USER_HOST))) == NULL)
|
if ((dbkey = (MYSQL_USER_HOST *) malloc(sizeof(MYSQL_USER_HOST))) == NULL)
|
||||||
{
|
{
|
||||||
return 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);
|
free(dbkey);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if ((dbkey->user = (char *) malloc(tmp + 1)) == NULL)
|
if ((dbkey->user = (char *) malloc(user_size + 1)) == NULL)
|
||||||
{
|
{
|
||||||
free(dbkey);
|
free(dbkey);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if (read(fd, dbkey->user, tmp) != tmp)
|
if (read(fd, dbkey->user, user_size) != user_size)
|
||||||
{
|
{
|
||||||
free(dbkey->user);
|
free(dbkey->user);
|
||||||
free(dbkey);
|
free(dbkey);
|
||||||
return NULL;
|
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))
|
if (read(fd, &dbkey->ipv4, sizeof(dbkey->ipv4)) != sizeof(dbkey->ipv4))
|
||||||
{
|
{
|
||||||
free(dbkey->user);
|
free(dbkey->user);
|
||||||
@ -2378,28 +2379,30 @@ dbusers_keyread(int fd)
|
|||||||
free(dbkey);
|
free(dbkey);
|
||||||
return NULL;
|
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->user);
|
||||||
free(dbkey);
|
free(dbkey);
|
||||||
return NULL;
|
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->user);
|
||||||
free(dbkey);
|
free(dbkey);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if (read(fd, dbkey->resource, tmp) != tmp)
|
if (read(fd, dbkey->resource, res_size) != res_size)
|
||||||
{
|
{
|
||||||
free(dbkey->resource);
|
free(dbkey->resource);
|
||||||
free(dbkey->user);
|
free(dbkey->user);
|
||||||
free(dbkey);
|
free(dbkey);
|
||||||
return NULL;
|
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
|
else // NULL is valid, so represent with a length of -1
|
||||||
{
|
{
|
||||||
|
@ -643,6 +643,9 @@ dcb_process_victim_queue(DCB *listofdcb)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
#if defined(FAKE_CODE)
|
||||||
|
conn_open[dcb->fd] = false;
|
||||||
|
#endif /* FAKE_CODE */
|
||||||
dcb->fd = DCBFD_CLOSED;
|
dcb->fd = DCBFD_CLOSED;
|
||||||
|
|
||||||
MXS_DEBUG("%lu [dcb_process_victim_queue] Closed socket "
|
MXS_DEBUG("%lu [dcb_process_victim_queue] Closed socket "
|
||||||
@ -650,9 +653,6 @@ dcb_process_victim_queue(DCB *listofdcb)
|
|||||||
pthread_self(),
|
pthread_self(),
|
||||||
dcb->fd,
|
dcb->fd,
|
||||||
dcb);
|
dcb);
|
||||||
#if defined(FAKE_CODE)
|
|
||||||
conn_open[dcb->fd] = false;
|
|
||||||
#endif /* FAKE_CODE */
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1024,7 +1024,7 @@ int main(int argc, char **argv)
|
|||||||
int n_services;
|
int n_services;
|
||||||
int eno = 0; /*< local variable for errno */
|
int eno = 0; /*< local variable for errno */
|
||||||
int opt;
|
int opt;
|
||||||
int daemon_pipe[2];
|
int daemon_pipe[2] = {-1, -1};
|
||||||
bool parent_process;
|
bool parent_process;
|
||||||
int child_status;
|
int child_status;
|
||||||
void** threads = NULL; /*< thread list */
|
void** threads = NULL; /*< thread list */
|
||||||
|
@ -502,7 +502,7 @@ createInstance(char **options, FILTER_PARAMETER **params)
|
|||||||
MQ_INSTANCE *my_instance;
|
MQ_INSTANCE *my_instance;
|
||||||
int paramcount = 0, parammax = 64, i = 0, x = 0, arrsize = 0;
|
int paramcount = 0, parammax = 64, i = 0, x = 0, arrsize = 0;
|
||||||
FILTER_PARAMETER** paramlist;
|
FILTER_PARAMETER** paramlist;
|
||||||
char** arr;
|
char** arr = NULL;
|
||||||
char taskname[512];
|
char taskname[512];
|
||||||
|
|
||||||
if ((my_instance = calloc(1, sizeof(MQ_INSTANCE))))
|
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)
|
if ((my_instance->conn = amqp_new_connection()) == NULL)
|
||||||
{
|
{
|
||||||
|
free(paramlist);
|
||||||
|
free(my_instance);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
my_instance->channel = 1;
|
my_instance->channel = 1;
|
||||||
@ -610,6 +612,10 @@ createInstance(char **options, FILTER_PARAMETER **params)
|
|||||||
|
|
||||||
if (arrsize > 0)
|
if (arrsize > 0)
|
||||||
{
|
{
|
||||||
|
for (int x = 0; x < arrsize; x++)
|
||||||
|
{
|
||||||
|
free(arr[x]);
|
||||||
|
}
|
||||||
free(arr);
|
free(arr);
|
||||||
}
|
}
|
||||||
arrsize = 0;
|
arrsize = 0;
|
||||||
@ -777,7 +783,11 @@ createInstance(char **options, FILTER_PARAMETER **params)
|
|||||||
|
|
||||||
snprintf(taskname, 511, "mqtask%d", atomic_add(&hktask_id, 1));
|
snprintf(taskname, 511, "mqtask%d", atomic_add(&hktask_id, 1));
|
||||||
hktask_add(taskname, sendMessage, (void*) my_instance, 5);
|
hktask_add(taskname, sendMessage, (void*) my_instance, 5);
|
||||||
|
for (int x = 0; x < arrsize; x++)
|
||||||
|
{
|
||||||
|
free(arr[x]);
|
||||||
|
}
|
||||||
|
free(arr);
|
||||||
}
|
}
|
||||||
return(FILTER *) my_instance;
|
return(FILTER *) my_instance;
|
||||||
}
|
}
|
||||||
@ -834,7 +844,7 @@ void sendMessage(void* data)
|
|||||||
{
|
{
|
||||||
MQ_INSTANCE *instance = (MQ_INSTANCE*) data;
|
MQ_INSTANCE *instance = (MQ_INSTANCE*) data;
|
||||||
mqmessage *tmp;
|
mqmessage *tmp;
|
||||||
int err_num;
|
int err_num = AMQP_STATUS_OK;
|
||||||
|
|
||||||
spinlock_acquire(&instance->rconn_lock);
|
spinlock_acquire(&instance->rconn_lock);
|
||||||
if (instance->conn_stat != AMQP_STATUS_OK)
|
if (instance->conn_stat != AMQP_STATUS_OK)
|
||||||
|
@ -360,6 +360,10 @@ int n_connect = 0;
|
|||||||
}
|
}
|
||||||
n_connect++;
|
n_connect++;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
close(so);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -156,6 +156,7 @@ MAXINFO_TREE *col, *table;
|
|||||||
{
|
{
|
||||||
/** Unknown token after RESTART MONITOR|SERVICE */
|
/** Unknown token after RESTART MONITOR|SERVICE */
|
||||||
*parse_error = PARSE_SYNTAX_ERROR;
|
*parse_error = PARSE_SYNTAX_ERROR;
|
||||||
|
free(text);
|
||||||
free_tree(tree);
|
free_tree(tree);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -376,7 +377,10 @@ int i;
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (s1 == s2)
|
if (s1 == s2)
|
||||||
|
{
|
||||||
|
*text = NULL;
|
||||||
return NULL;
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
*text = strndup(s1, s2 - s1);
|
*text = strndup(s1, s2 - s1);
|
||||||
for (i = 0; keywords[i].text; i++)
|
for (i = 0; keywords[i].text; i++)
|
||||||
|
@ -1254,7 +1254,7 @@ static void* newSession(
|
|||||||
if(db[0] != 0x0)
|
if(db[0] != 0x0)
|
||||||
{
|
{
|
||||||
/* Store the database the client is connecting to */
|
/* 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,
|
unsigned char packet_type,
|
||||||
skygw_query_type_t qtype)
|
skygw_query_type_t qtype)
|
||||||
{
|
{
|
||||||
bool succp;
|
bool succp = false;
|
||||||
rses_property_t* prop;
|
rses_property_t* prop;
|
||||||
backend_ref_t* backend_ref;
|
backend_ref_t* backend_ref;
|
||||||
int i;
|
int i;
|
||||||
|
@ -1497,7 +1497,7 @@ gen_show_dbs_response(ROUTER_INSTANCE* router, ROUTER_CLIENT_SES* client)
|
|||||||
rval = gwbuf_append(rval, last_packet);
|
rval = gwbuf_append(rval, last_packet);
|
||||||
|
|
||||||
rval = gwbuf_make_contiguous(rval);
|
rval = gwbuf_make_contiguous(rval);
|
||||||
|
hashtable_iterator_free(iter);
|
||||||
return rval;
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user