summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2019-11-06 17:04:20 -0500
committerJune McEnroe <june@causal.agency>2019-11-06 17:04:20 -0500
commitc7223d7e0cd74562255eb80d02d659e6901d43b9 (patch)
tree49297092a9978385e79fb492e5dd5ab511b650cb
parentDefine one CERTBOT_PATH rather than two format strings (diff)
downloadpounce-c7223d7e0cd74562255eb80d02d659e6901d43b9.tar.gz
pounce-c7223d7e0cd74562255eb80d02d659e6901d43b9.zip
Declare more missing functions and deal with lack of SO_NOSIGPIPE
-rw-r--r--Makefile2
-rw-r--r--bounce.c1
-rw-r--r--compat.h11
-rw-r--r--dispatch.c4
4 files changed, 14 insertions, 4 deletions
diff --git a/Makefile b/Makefile
index 465a2e9..265781e 100644
--- a/Makefile
+++ b/Makefile
@@ -33,6 +33,8 @@ pounce: ${OBJS}
 
 ${OBJS}: bounce.h compat.h
 
+dispatch.o: compat.h
+
 tags: *.c *.h
 	ctags -w *.c *.h
 
diff --git a/bounce.c b/bounce.c
index 93afbb4..1f29f8c 100644
--- a/bounce.c
+++ b/bounce.c
@@ -372,6 +372,7 @@ int main(int argc, char *argv[]) {
 
 	signal(SIGINT, signalHandler);
 	signal(SIGTERM, signalHandler);
+	signal(SIGPIPE, SIG_IGN);
 	signal(SIGINFO, signalHandler);
 	signal(SIGUSR1, signalHandler);
 
diff --git a/compat.h b/compat.h
index a874d35..961ece9 100644
--- a/compat.h
+++ b/compat.h
@@ -17,14 +17,17 @@
 #include <stdint.h>
 #include <stdlib.h>
 
-#ifdef NO_EXPLICIT_BZERO
+// libcrypto defines these functions if libc doesn't.
 void explicit_bzero(void *b, size_t len);
-#endif
-
-#ifdef NO_ARC4RANDOM
+size_t strlcpy(char *restrict dst, const char *restrict src, size_t dstsize);
+size_t strlcat(char *restrict dst, const char *restrict src, size_t dstsize);
 uint32_t arc4random(void);
 void arc4random_buf(void *buf, size_t nbytes);
 uint32_t arc4random_uniform(uint32_t upper_bound);
+
+// The default value of SO_RCVLOWAT is 1 anyway...
+#ifndef SO_NOSIGPIPE
+#define SO_NOSIGPIPE SO_RCVLOWAT
 #endif
 
 #ifndef SIGINFO
diff --git a/dispatch.c b/dispatch.c
index e52efc7..e80f297 100644
--- a/dispatch.c
+++ b/dispatch.c
@@ -19,6 +19,7 @@
 #include <netdb.h>
 #include <netinet/in.h>
 #include <poll.h>
+#include <signal.h>
 #include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -32,6 +33,8 @@
 #include <sys/capsicum.h>
 #endif
 
+#include "compat.h"
+
 static struct {
 	struct pollfd *ptr;
 	size_t len, cap;
@@ -231,6 +234,7 @@ int main(int argc, char *argv[]) {
 		if (error) err(EX_IOERR, "listen");
 	}
 
+	signal(SIGPIPE, SIG_IGN);
 	for (;;) {
 		int nfds = poll(
 			event.ptr, event.len, (event.len > binds ? timeout : -1)
t'> While the colors were easy to identify in blocks, the meaning of arrows is easier to remember, and survive logs being pasted for debugging. 2021-08-20Explicitly clear TLS secrets after handshakeJune McEnroe Ported from catgirl ae64d277b8204c156a30d2e8b6a958e5a31f2a7f. 2021-08-20Handle TLS_WANT_POLL{IN,OUT} from tls_handshake(3) with serverJune McEnroe 2021-08-20Use "secure" libtls ciphersJune McEnroe Ported from catgirl: commit 585039fb6e5097cfd16bc083c6d1c9356b237882 Author: Klemens Nanni <klemens@posteo.de> Date: Sun Jun 20 14:42:10 2021 +0000 Use "secure" libtls ciphers d3e90b6 'Use libtls "compat" ciphers' from 2018 fell back to "compat" ciphers to support irc.mozilla.org which now yields NXDOMAIN. All modern networks (should) support secure ciphers, so drop the hopefully unneeded list of less secure ciphers by avoiding tls_config_set_ciphers(3) and therefore sticking to the "secure" aka. "default" set of ciphers in libtls. A quick check shows that almost all of the big/known IRC networks support TLS1.3 already; those who do not at least comply with SSL_CTX_set_cipher_list(3)'s "HIGH" set as can be tested like this: echo \ irc.hackint.org \ irc.tilde.chat \ irc.libera.chat \ irc.efnet.nl \ irc.oftc.net | xargs -tn1 \ openssl s_client -quiet -cipher HIGH -no_ign_eof -port 6697 -host 2021-07-08Use seprintf to build final 005June McEnroe Rather than causing a tls_write(3) for each remaining token. 2021-06-19Fix LDADD.crypt on DarwinJune McEnroe 2021-06-18Add -m mode option to set user modesJune McEnroe 2021-06-18Document channel keys in join optionJune McEnroe 2021-06-18Use | to separate flags from config optionsJune McEnroe This lets mandoc generate tags for the option names as well, so you can ":t away" in less(1), for example, and anchor links in HTML output. The added No's prevent the equals signs from being part of the anchor links. 2021-06-18Stop referring to server-time as IRCv3.2June McEnroe IRCv3 has moved away from grouping specs together into versions like this. SASL is still referred to as IRCv3.2 because there are two different versions of that spec. 2021-06-17Add mailing list archive to READMEJune McEnroe 2021-06-10Stop accumulating ISUPPORT tokens once MOTD startsJune McEnroe This avoids duplicating tokens when a client sends VERSION and the server responds with its 005s again. 2021-06-09Use seprintf for snip, removing strlcpynJune McEnroe 2021-06-09Use seprintf for reserializeJune McEnroe 2021-06-09Use seprintf for capListJune McEnroe 2021-06-09Add seprintfJune McEnroe Based on seprint(2) from Plan 9. I'm not sure if my return value exactly matches Plan 9's in the case of truncation. seprint(2) is described only as returning a pointer to the terminating '\0', but if it does so even in the case of truncation, it is awkward for the caller to detect. This implementation returns end in the truncation case, so that (ptr == end) indicates truncation. 2021-05-27Add pounce-notify to README 2.4June McEnroe 2021-05-27Fix ENVIRONMENT formatting in pounce-notify(1)June McEnroe 2021-05-27Add note about Libera.Chat SASL-only rangesJune McEnroe 2021-05-25Add QUIRKS fileJune McEnroe 2021-05-19Replace freenode with tilde.chatJune McEnroe 2021-05-04notify: Reword pounce-notify manualJune McEnroe 2021-05-02Clean up Makefiles, configure scriptsJune McEnroe Default MANDIR to ${PREFIX}/man since it turns out man-db includes /usr/local/man by default. Add support for BINDIR. Separate libs out into LDADD variables. 2021-04-30palaver: Exit on getopt failureJune McEnroe Oops. 2021-04-30notify: Implement pounce-notifyJune McEnroe