diff --git a/server/core/gateway.c b/server/core/gateway.c index b15cbff47..70d7d9897 100644 --- a/server/core/gateway.c +++ b/server/core/gateway.c @@ -247,21 +247,27 @@ static bool file_write_header( const char* header_buf1; char* header_buf2 = NULL; const char* header_buf3; - time_t* t; - struct tm* tm; + time_t* t = NULL; + struct tm* tm = NULL; - t = (time_t *)malloc(sizeof(time_t)); - tm = (struct tm *)malloc(sizeof(struct tm)); + if ((t = (time_t *)malloc(sizeof(time_t))) == NULL) { + goto return_succp; + } + + if ((tm = (struct tm *)malloc(sizeof(struct tm))) == NULL) { + goto return_succp; + } + *t = time(NULL); *tm = *localtime(t); header_buf1 = "\n\nSkySQL MaxScale\t"; header_buf2 = strdup(asctime(tm)); - header_buf3 = "------------------------------------------------------\n"; if (header_buf2 == NULL) { goto return_succp; } + header_buf3 = "------------------------------------------------------\n"; len1 = strlen(header_buf1); len2 = strlen(header_buf2); @@ -273,14 +279,19 @@ static bool file_write_header( wbytes2=fwrite((void*)header_buf2, len2, 1, outfile); wbytes3=fwrite((void*)header_buf3, len3, 1, outfile); #endif - + succp = true; + return_succp: + if (tm != NULL) { + free(tm); + } + if (t != NULL) { + free(t); + } if (header_buf2 != NULL) { free(header_buf2); } - free(t); - free(tm); return succp; } diff --git a/server/core/service.c b/server/core/service.c index 6261beef2..2bbd5cb7f 100644 --- a/server/core/service.c +++ b/server/core/service.c @@ -273,10 +273,10 @@ int listeners = 0; port = service->ports; while (port) { - poll_add_dcb(port->listener); - port->listener->session->state = SESSION_STATE_LISTENER; - listeners++; - + if (poll_add_dcb(port->listener) == 0) { + port->listener->session->state = SESSION_STATE_LISTENER; + listeners++; + } port = port->next; }