From 86dd8affaff59cf9d2657ad1c04fd62571b9a470 Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Fri, 3 Jan 2025 16:46:21 -0500 Subject: Fix clang ASan detected bugs Signed-off-by: Andrew Opalach --- src/curl/curl.c | 6 ++++-- src/curl/curl.h | 1 + src/line_processor.c | 12 ++++++------ src/multiplex.c | 2 +- src/packet_pool.c | 1 + 5 files changed, 13 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/curl/curl.c b/src/curl/curl.c index d317224..e074643 100644 --- a/src/curl/curl.c +++ b/src/curl/curl.c @@ -19,14 +19,16 @@ static void curl_socket_action_callback(struct ev_loop *loop, ev_io *w, s32 reve curl->handle_events(curl->userdata, curl); } +// TODO: ev_io_set static void set_sock(struct nn_curl *curl, s32 what) { - if (curl->event.active) { + if (curl->started) { ev_io_stop(curl->loop->ev, &curl->event); } s32 action = (what & CURL_POLL_IN ? EV_READ : 0) | (what & CURL_POLL_OUT ? EV_WRITE : 0); ev_io_init(&curl->event, curl_socket_action_callback, curl->sock, action); ev_io_start(curl->loop->ev, &curl->event); + curl->started = true; } static s32 sock_callback(CURL *e, curl_socket_t s, s32 what, void *cbp, void *sockp) @@ -102,7 +104,7 @@ bool nn_curl_init(struct nn_curl *curl) curl->loop = NULL; curl->event.data = curl; - curl->event.active = 0; + curl->started = false; curl->timer_started = false; curl->added = false; diff --git a/src/curl/curl.h b/src/curl/curl.h index 7a5e31f..dd5798a 100644 --- a/src/curl/curl.h +++ b/src/curl/curl.h @@ -8,6 +8,7 @@ struct nn_curl { struct nn_event_loop *loop; ev_io event; + bool started; ev_timer timer; bool timer_started; CURL *handle; diff --git a/src/line_processor.c b/src/line_processor.c index 1d2d8f5..41f516e 100644 --- a/src/line_processor.c +++ b/src/line_processor.c @@ -48,20 +48,20 @@ static void read_callback(struct ev_loop *loop, ev_io *w, s32 revents) cl->index += ret; ptr = nn_buffer_get_ptr(&cl->buf, 0); - str *s = al_str_w((char *)ptr, 0, cl->index); + str s = *al_str_w((char *)ptr, 0, cl->index); str *dl = &pro->delim; u32 offset = dl->len - 1; for (size_t i = cl->mark; i < cl->index - offset; i++) { - if (al_str_cmp(s, dl, i, dl->len) == 0) { - s->len = i; + if (al_str_cmp(&s, dl, i, dl->len) == 0) { + s.len = i; - if (al_str_eq(s, LINE_PROCESSOR_END)) { + if (al_str_eq(&s, LINE_PROCESSOR_END)) { remove_client(pro, cl); return; } - switch (pro->callback(pro->userdata, s)) { + switch (pro->callback(pro->userdata, &s)) { case NNWT_LINE_PROCESSOR_STOP: nn_line_processor_stop(pro); return; @@ -72,7 +72,7 @@ static void read_callback(struct ev_loop *loop, ev_io *w, s32 revents) size_t skip = i + offset + 1; cl->index = cl->index - skip; al_memmove(ptr, &ptr[skip], cl->index); - s = al_str_w((char *)ptr, 0, cl->index); + s = *al_str_w((char *)ptr, 0, cl->index); cl->mark = i = 0; } diff --git a/src/multiplex.c b/src/multiplex.c index 24729a2..0d49c53 100644 --- a/src/multiplex.c +++ b/src/multiplex.c @@ -57,9 +57,9 @@ bool nn_multiplex_socket_listen(struct nn_multiplex_socket *multi, struct nn_eve void nn_multiplex_socket_close(struct nn_multiplex_socket *multi) { + ev_io_stop(multi->loop->ev, &multi->event); nn_socket_shutdown(&multi->sock); nn_socket_close(&multi->sock); - ev_io_stop(multi->loop->ev, &multi->event); } static struct nn_multiplex_direct multiplex_direct_global = { 0 }; diff --git a/src/packet_pool.c b/src/packet_pool.c index 3f454cd..db74eb9 100644 --- a/src/packet_pool.c +++ b/src/packet_pool.c @@ -90,6 +90,7 @@ void nn_packet_pool_submit(struct nn_packet_pool *pool, struct nn_packet *packet nn_mutex_lock(&pool->mutex); if (pool->disabled) { + return_internal(pool, packet); nn_mutex_unlock(&pool->mutex); return; } -- cgit v1.2.3-101-g0448