Fix a number of relatively simple bugs shown by Coverity.

This commit is contained in:
counterpoint
2015-06-26 17:31:40 +01:00
parent fc1615c489
commit 03503a8f9b
4 changed files with 18 additions and 19 deletions

View File

@ -1394,7 +1394,7 @@ int skygw_log_write_flush(
/** /**
* Write log string to buffer and add to file write list. * Write log string to buffer and add to file write list.
*/ */
for(i = LOGFILE_FIRST;i<=LOGFILE_LAST;i <<=1) for (i = LOGFILE_FIRST; i<LOGFILE_LAST ;i <<=1)
{ {
/** /**
* If particular log is disabled in general and it is not enabled for * If particular log is disabled in general and it is not enabled for
@ -1457,7 +1457,7 @@ int skygw_log_write(
* Write log string to buffer and add to file write list. * Write log string to buffer and add to file write list.
*/ */
for(i = LOGFILE_FIRST;i<=LOGFILE_LAST;i <<=1) for (i = LOGFILE_FIRST; i<LOGFILE_LAST; i <<=1)
{ {
/** /**
* If particular log is disabled in general and it is not enabled for * If particular log is disabled in general and it is not enabled for

View File

@ -932,7 +932,7 @@ hashtable_memory_fns(monitorhash,strdup,NULL,free,NULL);
/* if id is not set, do it now */ /* if id is not set, do it now */
if (gateway.id == 0) { if (gateway.id == 0) {
setipaddress(&serv_addr.sin_addr, (address == NULL) ? "0.0.0.0" : address); setipaddress(&serv_addr.sin_addr, (address == NULL) ? "0.0.0.0" : address);
gateway.id = (unsigned long) (serv_addr.sin_addr.s_addr + port != NULL ? atoi(port) : 0 + getpid()); gateway.id = (unsigned long) (serv_addr.sin_addr.s_addr + (port != NULL ? atoi(port) : 0 + getpid()));
} }
if (service && socket && protocol) { if (service && socket && protocol) {

View File

@ -113,14 +113,10 @@ MAXINFO_TREE *col, *table;
#endif #endif
default: default:
*parse_error = PARSE_SYNTAX_ERROR; *parse_error = PARSE_SYNTAX_ERROR;
if (tree)
free_tree(tree);
return NULL; return NULL;
} }
} }
*parse_error = PARSE_SYNTAX_ERROR; *parse_error = PARSE_SYNTAX_ERROR;
if (tree)
free_tree(tree);
return NULL; return NULL;
} }

View File

@ -4687,14 +4687,15 @@ static void handleError (
{ {
/** /**
* This is called in hope of getting replacement for * This is called in hope of getting replacement for
* failed slave(s). * failed slave(s). This call may free rses.
*/ */
*succp = handle_error_new_connection(inst, *succp = handle_error_new_connection(inst,
rses, &rses,
backend_dcb, backend_dcb,
errmsgbuf); errmsgbuf);
} }
rses_end_locked_router_action(rses); /* Free the lock if rses still exists */
if (rses) rses_end_locked_router_action(rses);
break; break;
} }
@ -4763,10 +4764,11 @@ static void handle_error_reply_client(
*/ */
static bool handle_error_new_connection( static bool handle_error_new_connection(
ROUTER_INSTANCE* inst, ROUTER_INSTANCE* inst,
ROUTER_CLIENT_SES* rses, ROUTER_CLIENT_SES** rses,
DCB* backend_dcb, DCB* backend_dcb,
GWBUF* errmsg) GWBUF* errmsg)
{ {
ROUTER_CLIENT_SES* myrses;
SESSION* ses; SESSION* ses;
int router_nservers; int router_nservers;
int max_nslaves; int max_nslaves;
@ -4774,7 +4776,8 @@ static bool handle_error_new_connection(
backend_ref_t* bref; backend_ref_t* bref;
bool succp; bool succp;
ss_dassert(SPINLOCK_IS_LOCKED(&rses->rses_lock)); myrses = *rses;
ss_dassert(SPINLOCK_IS_LOCKED(&myrses->rses_lock));
ses = backend_dcb->session; ses = backend_dcb->session;
CHK_SESSION(ses); CHK_SESSION(ses);
@ -4782,7 +4785,7 @@ static bool handle_error_new_connection(
/** /**
* If bref == NULL it has been replaced already with another one. * If bref == NULL it has been replaced already with another one.
*/ */
if ((bref = get_bref_from_dcb(rses, backend_dcb)) == NULL) if ((bref = get_bref_from_dcb(myrses, backend_dcb)) == NULL)
{ {
succp = true; succp = true;
goto return_succp; goto return_succp;
@ -4825,25 +4828,25 @@ static bool handle_error_new_connection(
(void *)bref); (void *)bref);
router_nservers = router_get_servercount(inst); router_nservers = router_get_servercount(inst);
max_nslaves = rses_get_max_slavecount(rses, router_nservers); max_nslaves = rses_get_max_slavecount(myrses, router_nservers);
max_slave_rlag = rses_get_max_replication_lag(rses); max_slave_rlag = rses_get_max_replication_lag(myrses);
/** /**
* Try to get replacement slave or at least the minimum * Try to get replacement slave or at least the minimum
* number of slave connections for router session. * number of slave connections for router session.
*/ */
if(inst->rwsplit_config.disable_slave_recovery) if(inst->rwsplit_config.disable_slave_recovery)
{ {
succp = have_enough_servers(&rses,1,router_nservers,inst) ? true : false; succp = have_enough_servers(&myrses,1,router_nservers,inst) ? true : false;
} }
else else
{ {
succp = select_connect_backend_servers( succp = select_connect_backend_servers(
&rses->rses_master_ref, &myrses->rses_master_ref,
rses->rses_backend_ref, myrses->rses_backend_ref,
router_nservers, router_nservers,
max_nslaves, max_nslaves,
max_slave_rlag, max_slave_rlag,
rses->rses_config.rw_slave_select_criteria, myrses->rses_config.rw_slave_select_criteria,
ses, ses,
inst); inst);
} }