From a65b9fa8b350feed79d68f1f4b5bb3a270a2cbe1 Mon Sep 17 00:00:00 2001 From: Markus Makela Date: Thu, 20 Nov 2014 06:44:43 +0200 Subject: [PATCH] Fixes to Coverity defects: 72662 82143 82144 82145 82348 82349 --- client/maxadmin.c | 2 +- server/core/dcb.c | 2 +- server/core/gateway.c | 27 +++++++++++++++++---- server/core/poll.c | 8 +++--- server/modules/filter/tee.c | 2 +- server/modules/filter/test/harness_common.c | 3 +++ server/modules/monitor/mysql_mon.c | 2 +- server/modules/protocol/httpd.c | 3 ++- 8 files changed, 36 insertions(+), 13 deletions(-) diff --git a/client/maxadmin.c b/client/maxadmin.c index c406d704e..6a3255b19 100644 --- a/client/maxadmin.c +++ b/client/maxadmin.c @@ -184,7 +184,7 @@ char c; } cmd = malloc(len + (2 * argc)); // Allow for quotes - strcpy(cmd, argv[optind]); + strncpy(cmd, argv[optind],len + (2 * argc)); for (i = optind +1; i < argc; i++) { strcat(cmd, " "); diff --git a/server/core/dcb.c b/server/core/dcb.c index 4d5942a17..8e3e3e050 100644 --- a/server/core/dcb.c +++ b/server/core/dcb.c @@ -1181,7 +1181,7 @@ int above_water; void dcb_close(DCB *dcb) { - int rc; + int rc = 0; CHK_DCB(dcb); diff --git a/server/core/gateway.c b/server/core/gateway.c index 109168221..379002521 100644 --- a/server/core/gateway.c +++ b/server/core/gateway.c @@ -1528,11 +1528,11 @@ int main(int argc, char **argv) { char buf[1024]; char *argv[8]; - bool succp; - + bool succp; + sprintf(buf, "%s/log", home_dir); if(mkdir(buf, 0777) != 0){ - + if(errno != EEXIST){ fprintf(stderr, "Error: Cannot create log directory: %s\n",buf); @@ -1585,9 +1585,26 @@ int main(int argc, char **argv) * machine. */ sprintf(datadir, "%s/data", home_dir); - mkdir(datadir, 0777); + + if(mkdir(datadir, 0777) != 0){ + + if(errno != EEXIST){ + fprintf(stderr, + "Error: Cannot create data directory: %s\n",datadir); + goto return_main; + } + } + sprintf(datadir, "%s/data/data%d", home_dir, getpid()); - mkdir(datadir, 0777); + + if(mkdir(datadir, 0777) != 0){ + + if(errno != EEXIST){ + fprintf(stderr, + "Error: Cannot create data directory: %s\n",datadir); + goto return_main; + } + } if (!daemon_mode) { diff --git a/server/core/poll.c b/server/core/poll.c index ecf17643c..750f5de57 100644 --- a/server/core/poll.c +++ b/server/core/poll.c @@ -1444,7 +1444,7 @@ void dShowEventQ(DCB *pdcb) { DCB *dcb; - +char *tmp1, *tmp2; spinlock_acquire(&pollqlock); if (eventq == NULL) { @@ -1460,8 +1460,10 @@ DCB *dcb; do { dcb_printf(pdcb, "%-16p | %-10s | %-18s | %-18s\n", dcb, dcb->evq.processing ? "Processing" : "Pending", - event_to_string(dcb->evq.processing_events), - event_to_string(dcb->evq.pending_events)); + (tmp1 = event_to_string(dcb->evq.processing_events)), + (tmp2 = event_to_string(dcb->evq.pending_events))); + free(tmp1); + free(tmp2); dcb = dcb->evq.next; } while (dcb != eventq); spinlock_release(&pollqlock); diff --git a/server/modules/filter/tee.c b/server/modules/filter/tee.c index 3d9be06a9..ff34e97b4 100644 --- a/server/modules/filter/tee.c +++ b/server/modules/filter/tee.c @@ -406,7 +406,7 @@ GWBUF *clone = NULL; if (my_session->residual < 0) my_session->residual = 0; } - else if (my_session->active && (ptr = modutil_get_SQL(queue) != NULL)) + else if ( my_session->active && (ptr = modutil_get_SQL(queue)) != NULL) { if ((my_instance->match == NULL || regexec(&my_instance->re, ptr, 0, NULL, 0) == 0) && diff --git a/server/modules/filter/test/harness_common.c b/server/modules/filter/test/harness_common.c index 03338a0d5..20fe81c49 100644 --- a/server/modules/filter/test/harness_common.c +++ b/server/modules/filter/test/harness_common.c @@ -1147,6 +1147,9 @@ int compare_files(int a,int b) return 1; } + memset(in,0,4098); + memset(exp,0,4098); + while(fdgets(a,in,4098) && fdgets(b,exp,4098)){ if(strcmp(in,exp)){ printf("The files differ at line %d:\n%s\n-------------------------------------\n%s\n",line,in,exp); diff --git a/server/modules/monitor/mysql_mon.c b/server/modules/monitor/mysql_mon.c index 830db8bcd..26899e7a8 100644 --- a/server/modules/monitor/mysql_mon.c +++ b/server/modules/monitor/mysql_mon.c @@ -606,7 +606,7 @@ MONITOR_SERVERS *ptr; int replication_heartbeat = handle->replicationHeartbeat; int detect_stale_master = handle->detectStaleMaster; int num_servers=0; -MONITOR_SERVERS *root_master; +MONITOR_SERVERS *root_master = NULL; size_t nrounds = 0; if (mysql_thread_init()) diff --git a/server/modules/protocol/httpd.c b/server/modules/protocol/httpd.c index 92887f154..453dd6c79 100644 --- a/server/modules/protocol/httpd.c +++ b/server/modules/protocol/httpd.c @@ -173,7 +173,7 @@ HTTPD_session *client_data = NULL; i = 0; - while (ISspace(buf[j]) && (j < sizeof(buf))) { + while ( (j < sizeof(buf)) && ISspace(buf[j])) { j++; } @@ -354,6 +354,7 @@ int n_connect = 0; n_connect++; } } + close(so); } return n_connect;