From: Alan T. DeKok Date: Wed, 18 Dec 2024 14:20:05 +0000 (+0100) Subject: more sanity checks for unconnected sockets X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d1bb876c1648595eaab491aaf8937a4ee52c782a;p=thirdparty%2Ffreeradius-server.git more sanity checks for unconnected sockets --- diff --git a/src/lib/bio/fd_open.c b/src/lib/bio/fd_open.c index fc42ba254b3..55a0b922635 100644 --- a/src/lib/bio/fd_open.c +++ b/src/lib/bio/fd_open.c @@ -860,15 +860,24 @@ int fr_bio_fd_check_config(fr_bio_fd_config_t const *cfg) } break; - case FR_BIO_FD_UNCONNECTED: case FR_BIO_FD_LISTEN: - if (cfg->src_ipaddr.af == AF_UNSPEC) { - fr_strerror_const("No source IP address was specified"); + if (!cfg->src_port) { + fr_strerror_const("No source port was specified"); return -1; } + FALL_THROUGH; - if (!cfg->src_port) { - fr_strerror_const("No source port was specified"); + /* + * Unconnected sockets can use a source port, but don't need one. + */ + case FR_BIO_FD_UNCONNECTED: + if (cfg->path && cfg->filename) { + fr_strerror_const("Unconnected sockets cannot be used with Unix sockets or files"); + return -1; + } + + if (cfg->src_ipaddr.af == AF_UNSPEC) { + fr_strerror_const("No source IP address was specified"); return -1; } break;