Fix compiler warnings
Added missing checks for return values of various function calls. Fixed binlogrouter strerror_r usage and wrong buffer sizes.
This commit is contained in:
parent
eb1e163bdf
commit
acd66b4eb3
@ -994,7 +994,10 @@ bool getPassword(char *passwd, size_t len)
|
||||
if (tcsetattr(STDIN_FILENO, 0, &tty_attr) == 0)
|
||||
{
|
||||
printf("Password: ");
|
||||
fgets(passwd, len, stdin);
|
||||
if (fgets(passwd, len, stdin) == NULL)
|
||||
{
|
||||
printf("Failed to read password\n");
|
||||
}
|
||||
|
||||
tty_attr.c_lflag = c_lflag;
|
||||
|
||||
|
@ -260,8 +260,14 @@ static const char* admin_remove_user(USERS *users, const char* fname,
|
||||
/** one step back */
|
||||
MXS_ERROR("Unable to set stream position. ");
|
||||
}
|
||||
fgets(line, LINELEN, fp);
|
||||
fputs(line, fp_tmp);
|
||||
if (fgets(line, LINELEN, fp))
|
||||
{
|
||||
fputs(line, fp_tmp);
|
||||
}
|
||||
else
|
||||
{
|
||||
MXS_ERROR("Failed to read line from admin users file");
|
||||
}
|
||||
}
|
||||
|
||||
if (fgetpos(fp, &rpos) != 0)
|
||||
|
@ -304,7 +304,10 @@ static void sigterm_handler(int i)
|
||||
|
||||
if (n_shutdowns == 1)
|
||||
{
|
||||
write(STDERR_FILENO, shutdown_msg, sizeof(shutdown_msg) - 1);
|
||||
if (write(STDERR_FILENO, shutdown_msg, sizeof(shutdown_msg) - 1) == -1)
|
||||
{
|
||||
printf("Failed to write shutdown message!\n");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -320,11 +323,17 @@ sigint_handler(int i)
|
||||
|
||||
if (n_shutdowns == 1)
|
||||
{
|
||||
write(STDERR_FILENO, shutdown_msg, sizeof(shutdown_msg) - 1);
|
||||
if (write(STDERR_FILENO, shutdown_msg, sizeof(shutdown_msg) - 1) == -1)
|
||||
{
|
||||
printf("Failed to write shutdown message!\n");
|
||||
}
|
||||
}
|
||||
else if (n_shutdowns == 2)
|
||||
{
|
||||
write(STDERR_FILENO, patience_msg, sizeof(patience_msg) - 1);
|
||||
if (write(STDERR_FILENO, patience_msg, sizeof(patience_msg) - 1) == -1)
|
||||
{
|
||||
printf("Failed to write shutdown message!\n");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2621,7 +2630,10 @@ static int set_user(const char* user)
|
||||
void write_child_exit_code(int fd, int code)
|
||||
{
|
||||
/** Notify the parent process that an error has occurred */
|
||||
write(fd, &code, sizeof (int));
|
||||
if (write(fd, &code, sizeof (int)) == -1)
|
||||
{
|
||||
printf("Failed to write child process message!\n");
|
||||
}
|
||||
close(fd);
|
||||
}
|
||||
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <maxscale/alloc.h>
|
||||
#include <maxscale/atomic.h>
|
||||
#include <maxscale/hashtable.h>
|
||||
@ -741,7 +742,12 @@ hashtable_save(HASHTABLE *table, const char *filename,
|
||||
close(fd);
|
||||
return -1;
|
||||
}
|
||||
write(fd, &rval, sizeof(rval)); // Write zero counter, will be overrwriten at end
|
||||
if (write(fd, &rval, sizeof(rval)) == -1) // Write zero counter, will be overrwriten at end
|
||||
{
|
||||
char err[MXS_STRERROR_BUFLEN];
|
||||
MXS_ERROR("Failed to write hashtable item count: %d, %s", errno,
|
||||
strerror_r(errno, err, sizeof(err)));
|
||||
}
|
||||
if ((iter = hashtable_iterator(table)) != NULL)
|
||||
{
|
||||
while ((key = hashtable_next(iter)) != NULL)
|
||||
@ -766,7 +772,12 @@ hashtable_save(HASHTABLE *table, const char *filename,
|
||||
/* Now go back and write the count of entries */
|
||||
if (lseek(fd, 7L, SEEK_SET) != -1)
|
||||
{
|
||||
write(fd, &rval, sizeof(rval));
|
||||
if (write(fd, &rval, sizeof(rval)) == -1)
|
||||
{
|
||||
char err[MXS_STRERROR_BUFLEN];
|
||||
MXS_ERROR("Failed to write hashtable item count: %d, %s", errno,
|
||||
strerror_r(errno, err, sizeof(err)));
|
||||
}
|
||||
}
|
||||
|
||||
close(fd);
|
||||
|
@ -958,17 +958,23 @@ static const char* mon_get_event_name(MXS_MONITOR_SERVERS* node)
|
||||
static void mon_append_node_names(MXS_MONITOR_SERVERS* servers, char* dest, int len, int status)
|
||||
{
|
||||
char *separator = "";
|
||||
char arr[MAX_SERVER_NAME_LEN + 32]; // Some extra space for port
|
||||
char arr[MAX_SERVER_NAME_LEN + 64]; // Some extra space for port and separator
|
||||
dest[0] = '\0';
|
||||
|
||||
while (servers && strlen(dest) < (len - strlen(separator)))
|
||||
while (servers && len)
|
||||
{
|
||||
if (status == 0 || servers->server->status & status)
|
||||
{
|
||||
strncat(dest, separator, len);
|
||||
snprintf(arr, sizeof(arr), "%s%s:%d", separator, servers->server->name,
|
||||
servers->server->port);
|
||||
separator = ",";
|
||||
snprintf(arr, sizeof(arr), "%s:%d", servers->server->name, servers->server->port);
|
||||
strncat(dest, arr, len - strlen(dest) - 1);
|
||||
int arrlen = strlen(arr);
|
||||
|
||||
if (arrlen < len)
|
||||
{
|
||||
strcat(dest, arr);
|
||||
len -= arrlen;
|
||||
}
|
||||
}
|
||||
servers = servers->next;
|
||||
}
|
||||
|
@ -1197,8 +1197,12 @@ blr_cache_response(ROUTER_INSTANCE *router, char *response, GWBUF *buf)
|
||||
{
|
||||
return;
|
||||
}
|
||||
write(fd, GWBUF_DATA(buf), GWBUF_LENGTH(buf));
|
||||
// TODO: Check result.
|
||||
if (write(fd, GWBUF_DATA(buf), GWBUF_LENGTH(buf)) == -1)
|
||||
{
|
||||
char err[MXS_STRERROR_BUFLEN];
|
||||
MXS_ERROR("Failed to write cached response: %d, %s",
|
||||
errno, strerror_r(errno, err, sizeof(err)));
|
||||
}
|
||||
|
||||
close(fd);
|
||||
}
|
||||
@ -1251,7 +1255,12 @@ blr_cache_read_response(ROUTER_INSTANCE *router, char *response)
|
||||
close(fd);
|
||||
return NULL;
|
||||
}
|
||||
read(fd, GWBUF_DATA(buf), statb.st_size);
|
||||
if (read(fd, GWBUF_DATA(buf), statb.st_size) == -1)
|
||||
{
|
||||
char err[MXS_STRERROR_BUFLEN];
|
||||
MXS_ERROR("Failed to read cached response: %d, %s",
|
||||
errno, strerror_r(errno, err, sizeof(err)));
|
||||
}
|
||||
close(fd);
|
||||
return buf;
|
||||
}
|
||||
@ -1421,11 +1430,10 @@ blr_read_events_all_events(ROUTER_INSTANCE *router, int fix, int debug)
|
||||
break;
|
||||
case -1:
|
||||
{
|
||||
char err_msg[BLRM_STRERROR_R_MSG_SIZE + 1] = "";
|
||||
strerror_r(errno, err_msg, BLRM_STRERROR_R_MSG_SIZE);
|
||||
char err[MXS_STRERROR_BUFLEN];
|
||||
MXS_ERROR("Failed to read binlog file %s at position %llu"
|
||||
" (%s).", router->binlog_name,
|
||||
pos, err_msg);
|
||||
" (%s).", router->binlog_name, pos,
|
||||
strerror_r(errno, err, sizeof(err)));
|
||||
|
||||
if (errno == EBADF)
|
||||
{
|
||||
@ -1533,7 +1541,7 @@ blr_read_events_all_events(ROUTER_INSTANCE *router, int fix, int debug)
|
||||
}
|
||||
else
|
||||
{
|
||||
char errmsg[BLRM_STRERROR_R_MSG_SIZE + 1] = "";
|
||||
char errmsg[BINLOG_ERROR_MSG_LEN + 1] = "";
|
||||
/* fill replication header struct */
|
||||
hdr.timestamp = EXTRACT32(hdbuf);
|
||||
hdr.event_type = hdbuf[4];
|
||||
@ -1641,12 +1649,12 @@ blr_read_events_all_events(ROUTER_INSTANCE *router, int fix, int debug)
|
||||
{
|
||||
if (n == -1)
|
||||
{
|
||||
char err_msg[BLRM_STRERROR_R_MSG_SIZE + 1] = "";
|
||||
strerror_r(errno, err_msg, BLRM_STRERROR_R_MSG_SIZE);
|
||||
char err[MXS_STRERROR_BUFLEN];
|
||||
MXS_ERROR("Error reading the event at %llu in %s. "
|
||||
"%s, expected %d bytes.",
|
||||
pos, router->binlog_name,
|
||||
err_msg, hdr.event_size - BINLOG_EVENT_HDR_LEN);
|
||||
strerror_r(errno, err, sizeof(err)),
|
||||
hdr.event_size - BINLOG_EVENT_HDR_LEN);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1709,7 +1717,7 @@ blr_read_events_all_events(ROUTER_INSTANCE *router, int fix, int debug)
|
||||
uint32_t event_size = EXTRACT32(hdbuf + BINLOG_EVENT_LEN_OFFSET);
|
||||
uint8_t *decrypt_ptr;
|
||||
unsigned long next_pos;
|
||||
char errmsg[BLRM_STRERROR_R_MSG_SIZE + 1] = "";
|
||||
char errmsg[BINLOG_ERROR_MSG_LEN + 1] = "";
|
||||
|
||||
/**
|
||||
* Events are encrypted.
|
||||
|
@ -3556,7 +3556,12 @@ blr_start_slave(ROUTER_INSTANCE* router, ROUTER_SLAVE* slave)
|
||||
router->prevbinlog,
|
||||
router->last_safe_pos);
|
||||
/* Truncate previous binlog file to last_safe pos */
|
||||
truncate(file, router->last_safe_pos);
|
||||
if (truncate(file, router->last_safe_pos) == -1)
|
||||
{
|
||||
char err[MXS_STRERROR_BUFLEN];
|
||||
MXS_ERROR("Failed to truncate file: %d, %s",
|
||||
errno, strerror_r(errno, err, sizeof(err)));
|
||||
}
|
||||
|
||||
/* Log it */
|
||||
MXS_WARNING("A transaction is still opened at pos %lu"
|
||||
|
Loading…
x
Reference in New Issue
Block a user