]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
more sanity checks for unconnected sockets
authorAlan T. DeKok <aland@freeradius.org>
Wed, 18 Dec 2024 14:20:05 +0000 (15:20 +0100)
committerAlan T. DeKok <aland@freeradius.org>
Fri, 20 Dec 2024 22:24:27 +0000 (17:24 -0500)
src/lib/bio/fd_open.c

index fc42ba254b3b23e80c3f6d076a348e793c1f0d9a..55a0b922635484693a544fa4dae3ac11f6ff4c1c 100644 (file)
@@ -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;