Fix some compiler warnings
`-Weverything' seems to have found a few problems. Also enabled clang sanitizers by default.
This commit is contained in:
parent
43d34d2473
commit
027333e56a
3
Makefile
3
Makefile
|
@ -2,7 +2,8 @@ SHELL = /bin/sh
|
||||||
CC = clang
|
CC = clang
|
||||||
# -Wunused-function is pretty annoying here, as everything is static and not
|
# -Wunused-function is pretty annoying here, as everything is static and not
|
||||||
# all parts of common.c are used in all the executables
|
# all parts of common.c are used in all the executables
|
||||||
CFLAGS = -ggdb -Wall -Wextra -std=c99 -Wno-unused-function
|
CFLAGS = -std=c99 -Wall -Wextra -Wno-unused-function \
|
||||||
|
-ggdb -fsanitize=address,undefined
|
||||||
# -lpthread is only there for debugging (gdb & errno)
|
# -lpthread is only there for debugging (gdb & errno)
|
||||||
LDFLAGS = `pkg-config --libs libssl` -lpthread
|
LDFLAGS = `pkg-config --libs libssl` -lpthread
|
||||||
|
|
||||||
|
|
22
src/common.c
22
src/common.c
|
@ -982,7 +982,11 @@ poller_timers_get_poll_timeout (struct poller_timers *self)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
int64_t timeout = self->info->when - poller_timers_get_current_time ();
|
int64_t timeout = self->info->when - poller_timers_get_current_time ();
|
||||||
return timeout >= 0 ? timeout : 0;
|
if (timeout <= 0)
|
||||||
|
return 0;
|
||||||
|
if (timeout > INT_MAX)
|
||||||
|
return INT_MAX;
|
||||||
|
return timeout;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
|
@ -994,7 +998,7 @@ poller_timers_get_poll_timeout (struct poller_timers *self)
|
||||||
struct poller_info
|
struct poller_info
|
||||||
{
|
{
|
||||||
int fd; ///< Our file descriptor
|
int fd; ///< Our file descriptor
|
||||||
uint32_t events; ///< The events we registered
|
short events; ///< The poll() events we registered for
|
||||||
poller_dispatcher_func dispatcher; ///< Event dispatcher
|
poller_dispatcher_func dispatcher; ///< Event dispatcher
|
||||||
void *user_data; ///< User data
|
void *user_data; ///< User data
|
||||||
};
|
};
|
||||||
|
@ -1074,10 +1078,10 @@ poller_ensure_space (struct poller *self)
|
||||||
(self->info, sizeof *self->info, self->alloc);
|
(self->info, sizeof *self->info, self->alloc);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static short
|
||||||
poller_epoll_to_poll_events (int events)
|
poller_epoll_to_poll_events (uint32_t events)
|
||||||
{
|
{
|
||||||
int result = 0;
|
short result = 0;
|
||||||
if (events & EPOLLIN) result |= POLLIN;
|
if (events & EPOLLIN) result |= POLLIN;
|
||||||
if (events & EPOLLOUT) result |= POLLOUT;
|
if (events & EPOLLOUT) result |= POLLOUT;
|
||||||
if (events & EPOLLERR) result |= POLLERR;
|
if (events & EPOLLERR) result |= POLLERR;
|
||||||
|
@ -1087,7 +1091,7 @@ poller_epoll_to_poll_events (int events)
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint32_t
|
static uint32_t
|
||||||
poller_poll_to_epoll_events (uint32_t events)
|
poller_poll_to_epoll_events (short events)
|
||||||
{
|
{
|
||||||
uint32_t result = 0;
|
uint32_t result = 0;
|
||||||
if (events & POLLIN) result |= EPOLLIN;
|
if (events & POLLIN) result |= EPOLLIN;
|
||||||
|
@ -1099,7 +1103,7 @@ poller_poll_to_epoll_events (uint32_t events)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
poller_set (struct poller *self, int fd, short int events,
|
poller_set (struct poller *self, int fd, short events,
|
||||||
poller_dispatcher_func dispatcher, void *data)
|
poller_dispatcher_func dispatcher, void *data)
|
||||||
{
|
{
|
||||||
ssize_t index = poller_find_by_fd (self, fd);
|
ssize_t index = poller_find_by_fd (self, fd);
|
||||||
|
@ -1185,7 +1189,7 @@ poller_run (struct poller *self)
|
||||||
struct pollfd pfd;
|
struct pollfd pfd;
|
||||||
pfd.fd = info->fd;
|
pfd.fd = info->fd;
|
||||||
pfd.revents = poller_epoll_to_poll_events (revents->events);
|
pfd.revents = poller_epoll_to_poll_events (revents->events);
|
||||||
pfd.events = poller_epoll_to_poll_events (info->events);
|
pfd.events = info->events;
|
||||||
|
|
||||||
self->dispatch_next++;
|
self->dispatch_next++;
|
||||||
info->dispatcher (&pfd, info->user_data);
|
info->dispatcher (&pfd, info->user_data);
|
||||||
|
@ -1255,7 +1259,7 @@ poller_ensure_space (struct poller *self)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
poller_set (struct poller *self, int fd, short int events,
|
poller_set (struct poller *self, int fd, short events,
|
||||||
poller_dispatcher_func dispatcher, void *data)
|
poller_dispatcher_func dispatcher, void *data)
|
||||||
{
|
{
|
||||||
ssize_t index = poller_find_by_fd (self, fd);
|
ssize_t index = poller_find_by_fd (self, fd);
|
||||||
|
|
|
@ -222,11 +222,11 @@ struct client
|
||||||
struct str read_buffer; ///< Unprocessed input
|
struct str read_buffer; ///< Unprocessed input
|
||||||
struct str write_buffer; ///< Output yet to be sent out
|
struct str write_buffer; ///< Output yet to be sent out
|
||||||
|
|
||||||
unsigned initialized : 1; ///< Has any data been received yet?
|
bool initialized; ///< Has any data been received yet?
|
||||||
unsigned registered : 1; ///< The user has registered
|
bool registered; ///< The user has registered
|
||||||
|
|
||||||
unsigned ssl_rx_want_tx : 1; ///< SSL_read() wants to write
|
bool ssl_rx_want_tx; ///< SSL_read() wants to write
|
||||||
unsigned ssl_tx_want_rx : 1; ///< SSL_write() wants to read
|
bool ssl_tx_want_rx; ///< SSL_write() wants to read
|
||||||
SSL *ssl; ///< SSL connection
|
SSL *ssl; ///< SSL connection
|
||||||
|
|
||||||
char *nickname; ///< IRC nickname (main identifier)
|
char *nickname; ///< IRC nickname (main identifier)
|
||||||
|
|
|
@ -52,7 +52,8 @@ siphash (const unsigned char key[16], const unsigned char *m, size_t len)
|
||||||
v1 ^= v2; v3 ^= v0; \
|
v1 ^= v2; v3 ^= v0; \
|
||||||
v2 = ROTL64(v2,32);
|
v2 = ROTL64(v2,32);
|
||||||
|
|
||||||
for (i = 0, blocks = (len & ~7); i < blocks; i += 8) {
|
for (i = 0, blocks = (len & ~(size_t) 7); i < blocks; i += 8)
|
||||||
|
{
|
||||||
mi = u8to64_le (m + i);
|
mi = u8to64_le (m + i);
|
||||||
v3 ^= mi;
|
v3 ^= mi;
|
||||||
COMPRESS
|
COMPRESS
|
||||||
|
|
|
@ -55,8 +55,8 @@ struct plugin_data
|
||||||
LIST_HEADER (plugin_data)
|
LIST_HEADER (plugin_data)
|
||||||
struct bot_context *ctx; ///< Parent context
|
struct bot_context *ctx; ///< Parent context
|
||||||
|
|
||||||
pid_t pid; ///< PID of the plugin process
|
|
||||||
char *name; ///< Plugin identifier
|
char *name; ///< Plugin identifier
|
||||||
|
pid_t pid; ///< PID of the plugin process
|
||||||
|
|
||||||
bool is_zombie; ///< Whether the child is a zombie
|
bool is_zombie; ///< Whether the child is a zombie
|
||||||
bool initialized; ///< Ready to exchange IRC messages
|
bool initialized; ///< Ready to exchange IRC messages
|
||||||
|
@ -66,9 +66,9 @@ struct plugin_data
|
||||||
// we don't stall on plugins unnecessarily.
|
// we don't stall on plugins unnecessarily.
|
||||||
|
|
||||||
int read_fd; ///< The read end of the comm. pipe
|
int read_fd; ///< The read end of the comm. pipe
|
||||||
struct str read_buffer; ///< Unprocessed input
|
|
||||||
|
|
||||||
int write_fd; ///< The write end of the comm. pipe
|
int write_fd; ///< The write end of the comm. pipe
|
||||||
|
|
||||||
|
struct str read_buffer; ///< Unprocessed input
|
||||||
struct str write_buffer; ///< Output yet to be sent out
|
struct str write_buffer; ///< Output yet to be sent out
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1610,7 +1610,7 @@ on_signal_pipe_readable (const struct pollfd *fd, struct bot_context *ctx)
|
||||||
// "plugin `name' died like a dirty jewish pig"; use `status'
|
// "plugin `name' died like a dirty jewish pig"; use `status'
|
||||||
if (!plugin->is_zombie && WIFSIGNALED (status))
|
if (!plugin->is_zombie && WIFSIGNALED (status))
|
||||||
{
|
{
|
||||||
char *notes = "";
|
const char *notes = "";
|
||||||
#ifdef WCOREDUMP
|
#ifdef WCOREDUMP
|
||||||
if (WCOREDUMP (status))
|
if (WCOREDUMP (status))
|
||||||
notes = " (core dumped)";
|
notes = " (core dumped)";
|
||||||
|
|
Loading…
Reference in New Issue