From edf60ab730e8809d32067b2dc24479ecabd1ca8d Mon Sep 17 00:00:00 2001 From: Aaron Sethman Date: Wed, 28 Jan 2026 20:16:14 -0500 Subject: [PATCH 1/5] i love sed --- src/supported.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/supported.c b/src/supported.c index 1aa5d489..bf01425d 100644 --- a/src/supported.c +++ b/src/supported.c @@ -1,5 +1,5 @@ /* - * charybdis: A slightly useful ircd. + * ircd-ratbox: A slightly useful ircd. * supported.c: isupport (005) numeric * * Copyright (C) 2006-2008 Jilles Tjoelker From dd0bad4da9c5cc6275bc5a3d8a265560765124c1 Mon Sep 17 00:00:00 2001 From: Aaron Sethman Date: Thu, 29 Jan 2026 11:58:54 -0500 Subject: [PATCH 2/5] fixup nossl arc4random stuff --- libratbox/include/arc4random.h | 7 ------- libratbox/include/rb_arc4random.h | 11 +++++++++++ libratbox/src/arc4random.c | 2 +- libratbox/src/nossl.c | 2 +- 4 files changed, 13 insertions(+), 9 deletions(-) delete mode 100644 libratbox/include/arc4random.h create mode 100644 libratbox/include/rb_arc4random.h diff --git a/libratbox/include/arc4random.h b/libratbox/include/arc4random.h deleted file mode 100644 index 6bdd701f..00000000 --- a/libratbox/include/arc4random.h +++ /dev/null @@ -1,7 +0,0 @@ - - -#if !defined(HAVE_OPENSSL) && !defined(HAVE_GNUTLS) && !defined(HAVE_ARC4RANDOM) -void arc4random_stir(void); -uint32_t arc4random(void); -void arc4random_addrandom(uint8_t *dat, int datlen); -#endif diff --git a/libratbox/include/rb_arc4random.h b/libratbox/include/rb_arc4random.h new file mode 100644 index 00000000..ae63ee91 --- /dev/null +++ b/libratbox/include/rb_arc4random.h @@ -0,0 +1,11 @@ +#ifndef _RB_ARC4RANDOM_H +#define _RB_ARC4RANDOM 1 + +#include "libratbox_config.h" +#include "ratbox_lib.h" + +extern void arc4random_stir(void); +extern uint32_t arc4random(void); +extern void arc4random_addrandom(uint8_t *dat, int datlen); + +#endif diff --git a/libratbox/src/arc4random.c b/libratbox/src/arc4random.c index abdf2944..d61c85d7 100644 --- a/libratbox/src/arc4random.c +++ b/libratbox/src/arc4random.c @@ -32,7 +32,7 @@ #include "ratbox_lib.h" #if !defined(HAVE_OPENSSL) && !defined(HAVE_GNUTLS) && !defined(HAVE_MBEDTLS) && !defined(HAVE_ARC4RANDOM) -#include +#include "rb_arc4random.h" #include #ifdef HAVE_GETRUSAGE diff --git a/libratbox/src/nossl.c b/libratbox/src/nossl.c index 67588aff..c5f8360f 100644 --- a/libratbox/src/nossl.c +++ b/libratbox/src/nossl.c @@ -25,7 +25,7 @@ #include "ratbox_lib.h" #if !defined(HAVE_OPENSSL) && !defined(HAVE_GNUTLS) && !defined(HAVE_MBEDTLS) -#include "arc4random.h" +#include "rb_arc4random.h" #include "commio-int.h" #include "commio-ssl.h" From 7b2ed01a156f831d91b31d6fd1c5b567b279bd53 Mon Sep 17 00:00:00 2001 From: Aaron Sethman Date: Thu, 29 Jan 2026 12:05:47 -0500 Subject: [PATCH 3/5] Revert "fixup nossl arc4random stuff" This reverts commit dd0bad4da9c5cc6275bc5a3d8a265560765124c1. --- libratbox/include/arc4random.h | 7 +++++++ libratbox/include/rb_arc4random.h | 11 ----------- libratbox/src/arc4random.c | 2 +- libratbox/src/nossl.c | 2 +- 4 files changed, 9 insertions(+), 13 deletions(-) create mode 100644 libratbox/include/arc4random.h delete mode 100644 libratbox/include/rb_arc4random.h diff --git a/libratbox/include/arc4random.h b/libratbox/include/arc4random.h new file mode 100644 index 00000000..6bdd701f --- /dev/null +++ b/libratbox/include/arc4random.h @@ -0,0 +1,7 @@ + + +#if !defined(HAVE_OPENSSL) && !defined(HAVE_GNUTLS) && !defined(HAVE_ARC4RANDOM) +void arc4random_stir(void); +uint32_t arc4random(void); +void arc4random_addrandom(uint8_t *dat, int datlen); +#endif diff --git a/libratbox/include/rb_arc4random.h b/libratbox/include/rb_arc4random.h deleted file mode 100644 index ae63ee91..00000000 --- a/libratbox/include/rb_arc4random.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef _RB_ARC4RANDOM_H -#define _RB_ARC4RANDOM 1 - -#include "libratbox_config.h" -#include "ratbox_lib.h" - -extern void arc4random_stir(void); -extern uint32_t arc4random(void); -extern void arc4random_addrandom(uint8_t *dat, int datlen); - -#endif diff --git a/libratbox/src/arc4random.c b/libratbox/src/arc4random.c index d61c85d7..abdf2944 100644 --- a/libratbox/src/arc4random.c +++ b/libratbox/src/arc4random.c @@ -32,7 +32,7 @@ #include "ratbox_lib.h" #if !defined(HAVE_OPENSSL) && !defined(HAVE_GNUTLS) && !defined(HAVE_MBEDTLS) && !defined(HAVE_ARC4RANDOM) -#include "rb_arc4random.h" +#include #include #ifdef HAVE_GETRUSAGE diff --git a/libratbox/src/nossl.c b/libratbox/src/nossl.c index c5f8360f..67588aff 100644 --- a/libratbox/src/nossl.c +++ b/libratbox/src/nossl.c @@ -25,7 +25,7 @@ #include "ratbox_lib.h" #if !defined(HAVE_OPENSSL) && !defined(HAVE_GNUTLS) && !defined(HAVE_MBEDTLS) -#include "rb_arc4random.h" +#include "arc4random.h" #include "commio-int.h" #include "commio-ssl.h" From bf4d28a52579236dcb0a02a6e01d947e53b43d94 Mon Sep 17 00:00:00 2001 From: Aaron Sethman Date: Thu, 29 Jan 2026 12:32:38 -0500 Subject: [PATCH 4/5] Sort out nossl case where the libc provides arc4random but possibly not arc4random_stir. --- libratbox/configure | 2 +- libratbox/configure.ac | 2 +- libratbox/include/arc4random.h | 7 ------ libratbox/include/libratbox_config.h.in | 3 +++ libratbox/include/ratbox_lib.h | 1 + libratbox/include/rb_arc4random.h | 8 +++++++ libratbox/src/arc4random.c | 6 ++--- libratbox/src/nossl.c | 29 +++++++++++++++++++++---- 8 files changed, 42 insertions(+), 16 deletions(-) delete mode 100644 libratbox/include/arc4random.h create mode 100644 libratbox/include/rb_arc4random.h diff --git a/libratbox/configure b/libratbox/configure index c4a41b7a..af7c22e4 100755 --- a/libratbox/configure +++ b/libratbox/configure @@ -14052,7 +14052,7 @@ fi -for ac_func in snprintf vsnprintf socketpair gettimeofday writev sendmsg gmtime_r strtok_r usleep posix_spawn strdup strndup strlcpy strlcat strnlen fstat signalfd select poll kevent kqueue1 port_create epoll_ctl epoll_create1 arc4random getrusage timerfd_create accept4 pipe2 +for ac_func in snprintf vsnprintf socketpair gettimeofday writev sendmsg gmtime_r strtok_r usleep posix_spawn strdup strndup strlcpy strlcat strnlen fstat signalfd select poll kevent kqueue1 port_create epoll_ctl epoll_create1 arc4random arc4random_stir getrusage timerfd_create accept4 pipe2 do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" diff --git a/libratbox/configure.ac b/libratbox/configure.ac index b8f84571..11c52e90 100644 --- a/libratbox/configure.ac +++ b/libratbox/configure.ac @@ -295,7 +295,7 @@ AC_CHECK_TYPE([sa_family_t], [], dnl check for various functions... -AC_CHECK_FUNCS([snprintf vsnprintf socketpair gettimeofday writev sendmsg gmtime_r strtok_r usleep posix_spawn strdup strndup strlcpy strlcat strnlen fstat signalfd select poll kevent kqueue1 port_create epoll_ctl epoll_create1 arc4random getrusage timerfd_create accept4 pipe2]) +AC_CHECK_FUNCS([snprintf vsnprintf socketpair gettimeofday writev sendmsg gmtime_r strtok_r usleep posix_spawn strdup strndup strlcpy strlcat strnlen fstat signalfd select poll kevent kqueue1 port_create epoll_ctl epoll_create1 arc4random arc4random_stir getrusage timerfd_create accept4 pipe2]) AC_SEARCH_LIBS(nanosleep, rt posix4, AC_DEFINE(HAVE_NANOSLEEP, 1, [Define if you have nanosleep])) AC_SEARCH_LIBS(timer_create, rt, AC_DEFINE(HAVE_TIMER_CREATE, 1, [Define if you have timer_create])) diff --git a/libratbox/include/arc4random.h b/libratbox/include/arc4random.h deleted file mode 100644 index 6bdd701f..00000000 --- a/libratbox/include/arc4random.h +++ /dev/null @@ -1,7 +0,0 @@ - - -#if !defined(HAVE_OPENSSL) && !defined(HAVE_GNUTLS) && !defined(HAVE_ARC4RANDOM) -void arc4random_stir(void); -uint32_t arc4random(void); -void arc4random_addrandom(uint8_t *dat, int datlen); -#endif diff --git a/libratbox/include/libratbox_config.h.in b/libratbox/include/libratbox_config.h.in index c3c2f4e4..62b20206 100644 --- a/libratbox/include/libratbox_config.h.in +++ b/libratbox/include/libratbox_config.h.in @@ -21,6 +21,9 @@ /* Define to 1 if you have the `arc4random' function. */ #undef HAVE_ARC4RANDOM +/* Define to 1 if you have the `arc4random_stir' function. */ +#undef HAVE_ARC4RANDOM_STIR + /* Define to 1 if you have the header file. */ #undef HAVE_ARPA_INET_H diff --git a/libratbox/include/ratbox_lib.h b/libratbox/include/ratbox_lib.h index cc986f1c..34d33226 100644 --- a/libratbox/include/ratbox_lib.h +++ b/libratbox/include/ratbox_lib.h @@ -6,6 +6,7 @@ #include "librb-config.h" #include +#include #include #include #include diff --git a/libratbox/include/rb_arc4random.h b/libratbox/include/rb_arc4random.h new file mode 100644 index 00000000..8a11f370 --- /dev/null +++ b/libratbox/include/rb_arc4random.h @@ -0,0 +1,8 @@ + +#include "librb-config.h" + +#if !defined(HAVE_OPENSSL) && !defined(HAVE_GNUTLS) && !defined(HAVE_ARC4RANDOM) +extern void rb_arc4random_stir(void); +extern uint32_t rb_arc4random(void); +extern void rb_arc4random_addrandom(uint8_t *dat, int datlen); +#endif diff --git a/libratbox/src/arc4random.c b/libratbox/src/arc4random.c index abdf2944..7a47f03a 100644 --- a/libratbox/src/arc4random.c +++ b/libratbox/src/arc4random.c @@ -174,7 +174,7 @@ arc4_getword(struct arc4_stream *as) } void -arc4random_stir(void) +rb_arc4random_stir(void) { if(!rs_initialized) { @@ -185,7 +185,7 @@ arc4random_stir(void) } void -arc4random_addrandom(uint8_t *dat, int datlen) +rb_arc4random_addrandom(uint8_t *dat, int datlen) { if(!rs_initialized) arc4random_stir(); @@ -193,7 +193,7 @@ arc4random_addrandom(uint8_t *dat, int datlen) } uint32_t -arc4random(void) +rb_arc4random(void) { if(!rs_initialized) arc4random_stir(); diff --git a/libratbox/src/nossl.c b/libratbox/src/nossl.c index 67588aff..7bbe48cd 100644 --- a/libratbox/src/nossl.c +++ b/libratbox/src/nossl.c @@ -20,12 +20,30 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ - #include "libratbox_config.h" #include "ratbox_lib.h" #if !defined(HAVE_OPENSSL) && !defined(HAVE_GNUTLS) && !defined(HAVE_MBEDTLS) -#include "arc4random.h" +#ifndef HAVE_ARC4RANDOM +#include "rb_arc4random.h" + +extern void rb_arc4random_stir(void); +extern uint32_t rb_arc4random(void); +extern void rb_arc4random_addrandom(uint8_t *dat, int datlen); + +#define arc4random_stir() rb_arc4random_stir() +#define arc4random() rb_arc4random() +#define arc4random_addrandom(x, y) rb_arc4random_addrandom(x, y) + +#endif + +/* newer *bsd doesn't have arc4random_stir */ +#if defined(HAVE_ARC4RANDOM) && !defined(HAVE_ARC4RANDOM_STIR) +#define arc4random_stir() +#define NOARC4STIR 1 +#endif + + #include "commio-int.h" #include "commio-ssl.h" @@ -52,19 +70,22 @@ rb_ssl_listen(rb_fde_t *F, int backlog, bool defer_accept) errno = ENOSYS; return -1; } - +#ifndef NOARC4STIR static void rb_stir_arc4random(void *unused) { arc4random_stir(); } +#endif int rb_init_prng(const char *path, prng_seed_t seed_type) { /* xxx this ignores the parameters above */ - arc4random_stir(); +#ifndef NOARC4STIR + rb_arc4random_stir(); rb_event_addish("rb_stir_arc4random", rb_stir_arc4random, NULL, 300); +#endif return 1; } From db311ed0cd6c3ea75d027ffc7a1a8de8a62d56d6 Mon Sep 17 00:00:00 2001 From: Aaron Sethman Date: Thu, 29 Jan 2026 12:34:30 -0500 Subject: [PATCH 5/5] tidy up rb_set_cloexec --- libratbox/src/commio.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/libratbox/src/commio.c b/libratbox/src/commio.c index 86a1b082..496a3074 100644 --- a/libratbox/src/commio.c +++ b/libratbox/src/commio.c @@ -247,14 +247,10 @@ static int rb_fd_set_cloexec(int fd, bool doclose) int rb_set_cloexec(rb_fde_t *F, bool doclose) { - int res; - int fd; if(F == NULL) return 0; - fd = F->fd; - - return rb_fd_set_cloexec(fd, doclose); + return rb_fd_set_cloexec(F->fd, doclose); }