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/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); } 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; } 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