From 5fa87776b0c6122a4c913111efcaec33d243735d Mon Sep 17 00:00:00 2001 From: Mark Riddoch Date: Thu, 20 Nov 2014 16:04:22 +0000 Subject: [PATCH] Fixes for Coverity bugs --- server/core/dcb.c | 66 ++++++++++++++++++++++--------------------- server/core/poll.c | 3 +- server/core/secrets.c | 2 +- 3 files changed, 37 insertions(+), 34 deletions(-) diff --git a/server/core/dcb.c b/server/core/dcb.c index 8e3e3e050..8066bcef5 100644 --- a/server/core/dcb.c +++ b/server/core/dcb.c @@ -1210,46 +1210,48 @@ dcb_close(DCB *dcb) if (dcb->state == DCB_STATE_POLLING) { if (dcb->fd != -1) + { rc = poll_remove_dcb(dcb); - if (rc == 0) { - LOGIF(LD, (skygw_log_write( - LOGFILE_DEBUG, - "%lu [dcb_close] Removed dcb %p in state %s from " - "poll set.", - pthread_self(), - dcb, - STRDCBSTATE(dcb->state)))); - } else { - LOGIF(LE, (skygw_log_write( - LOGFILE_ERROR, - "Error : Removing DCB fd == %d in state %s from " - "poll set failed.", - dcb->fd, - STRDCBSTATE(dcb->state)))); - } - - if (rc == 0) - { - /** - * close protocol and router session - */ - if (dcb->func.close != NULL) - { - dcb->func.close(dcb); + if (rc == 0) { + LOGIF(LD, (skygw_log_write( + LOGFILE_DEBUG, + "%lu [dcb_close] Removed dcb %p in state %s from " + "poll set.", + pthread_self(), + dcb, + STRDCBSTATE(dcb->state)))); + } else { + LOGIF(LE, (skygw_log_write( + LOGFILE_ERROR, + "Error : Removing DCB fd == %d in state %s from " + "poll set failed.", + dcb->fd, + STRDCBSTATE(dcb->state)))); } - dcb_call_callback(dcb, DCB_REASON_CLOSE); - - - if (dcb->state == DCB_STATE_NOPOLLING) + + if (rc == 0) { - dcb_add_to_zombieslist(dcb); + /** + * close protocol and router session + */ + if (dcb->func.close != NULL) + { + dcb->func.close(dcb); + } + dcb_call_callback(dcb, DCB_REASON_CLOSE); + + + if (dcb->state == DCB_STATE_NOPOLLING) + { + dcb_add_to_zombieslist(dcb); + } } } + ss_dassert(dcb->state == DCB_STATE_NOPOLLING || + dcb->state == DCB_STATE_ZOMBIE); } - ss_dassert(dcb->state == DCB_STATE_NOPOLLING || - dcb->state == DCB_STATE_ZOMBIE); } /** diff --git a/server/core/poll.c b/server/core/poll.c index 750f5de57..53a09c25e 100644 --- a/server/core/poll.c +++ b/server/core/poll.c @@ -1444,7 +1444,8 @@ void dShowEventQ(DCB *pdcb) { DCB *dcb; -char *tmp1, *tmp2; +char *tmp1, *tmp2; + spinlock_acquire(&pollqlock); if (eventq == NULL) { diff --git a/server/core/secrets.c b/server/core/secrets.c index 2dcd4567d..4f98e81f7 100644 --- a/server/core/secrets.c +++ b/server/core/secrets.c @@ -363,7 +363,7 @@ unsigned char encrypted[80]; return NULL; memset(padded_passwd, 0, 80); - strncpy((char *)padded_passwd, password, 80); + strncpy((char *)padded_passwd, password, 79); padded_len = ((strlen(password) / AES_BLOCK_SIZE) + 1) * AES_BLOCK_SIZE; AES_set_encrypt_key(keys->enckey, 8 * MAXSCALE_KEYLEN, &aeskey);