* @copyright 2024 Network RADIUS SAS (legal@networkradius.com)
*/
-#ifdef __linux__
-/*
- * for accept4()
- */
-#define _GNU_SOURCE
-#endif
-
#include <freeradius-devel/bio/fd_priv.h>
#include <freeradius-devel/bio/null.h>
addr->socket.inet.dst_ipaddr = my->info.socket.inet.src_ipaddr;
addr->socket.inet.dst_port = my->info.socket.inet.src_port;
- (void) fr_ipaddr_from_sockaddr(&addr->socket.inet.src_ipaddr, addr->socket.inet.src_port,
+ (void) fr_ipaddr_from_sockaddr(&addr->socket.inet.src_ipaddr, &addr->socket.inet.src_port,
&sockaddr, salen);
return rcode;
}
int tries = 0;
ssize_t rcode;
struct sockaddr_storage from;
- socklen_t from_len;
fr_bio_fd_packet_ctx_t *addr = fr_bio_fd_packet_ctx(my, packet_ctx);
my->info.read_blocked = false;
.msg_control = my->cbuf,
.msg_controllen = sizeof(my->cbuf),
.msg_name = &from,
- .msg_namelen = &from_len,
+ .msg_namelen = sizeof(from),
.msg_iov = &my->iov,
.msg_iovlen = 1,
.msg_flags = 0,
ADDR_INIT;
(void) fr_ipaddr_from_sockaddr(&addr->socket.inet.src_ipaddr, &addr->socket.inet.src_port,
- &from, from_len);
+ &from, my->msgh.msg_namelen);
return rcode;
}
.msg_control = my->cbuf,
// controllen is set below
.msg_name = &to,
- .msg_namelen = &to_len,
+ .msg_namelen = to_len,
.msg_iov = &my->iov,
.msg_iovlen = 1,
.msg_flags = 0,
struct sockaddr_storage sockaddr;
if (my->info.socket.af != AF_UNIX) {
- rcode = fr_ipaddr_to_sockaddr(&sockaddr, &salen, &my->info.socket.inet.dst_ipaddr, &my->info.socket.inet.dst_port);
+ rcode = fr_ipaddr_to_sockaddr(&sockaddr, &salen, &my->info.socket.inet.dst_ipaddr, my->info.socket.inet.dst_port);
} else {
rcode = fr_filename_to_sockaddr((struct sockaddr_un *) &sockaddr, &salen, my->info.socket.unix.path);
}
ADDR_INIT;
- (void) fr_ipaddr_from_sockaddr(&addr->socket.inet.src_ipaddr, addr->socket.inet.src_port,
+ (void) fr_ipaddr_from_sockaddr(&addr->socket.inet.src_ipaddr, &addr->socket.inet.src_port,
&sockaddr, salen);
addr->socket.inet.dst_ipaddr = my->info.socket.inet.src_ipaddr;
if ((my->info.socket.fd >= 0) &&
(fr_bio_fd_init(&my->bio, sock) < 0)) {
talloc_free(my);
- return -1;
+ return NULL;
}
} else {
/*
#include <freeradius-devel/bio/fd_priv.h>
#include <freeradius-devel/util/file.h>
+#include <freeradius-devel/util/cap.h>
#include <sys/stat.h>
#include <net/if.h>
*
* slashes[1] points to the slash after 'radiusd', which doesn't exist.
*/
- slashes[0] = '\0';
+ *slashes[0] = '\0';
/*
* If the grandparent doesn't exist, then we don't create it.
/*
* Create the parent directory.
*/
- slashes[0] = '/';
- slashes[1] = '\0';
+ *slashes[0] = '/';
+ *slashes[1] = '\0';
if (mkdirat(parent_fd, dir, 0700) < 0) {
fr_strerror_printf("Failed creating directory %s: %s", dir, fr_syserror(errno));
close_parent:
*
* Writes pass straight through to the next bio.
*/
-fr_bio_t *fr_bio_mem_packet_alloc(TALLOC_CTX *ctx, size_t read_size, fr_bio_t *next,
- fr_bio_verify_t verify, void *uctx)
+fr_bio_t *fr_bio_mem_packet_alloc(TALLOC_CTX *ctx, size_t read_size, fr_bio_verify_t verify, fr_bio_t *next)
{
fr_bio_mem_t *my;
fr_bio_t *fr_bio_mem_alloc(TALLOC_CTX *ctx, size_t read_size, size_t write_size, fr_bio_t *next) CC_HINT(nonnull);
-fr_bio_t *fr_bio_mem_packet_alloc(TALLOC_CTX *ctx, size_t read_size, fr_bio_t *next,
- fr_bio_verify_t verify, void *uctx) CC_HINT(nonnull(1,3,4));
+fr_bio_t *fr_bio_mem_packet_alloc(TALLOC_CTX *ctx, size_t read_size, fr_bio_verify_t verify, fr_bio_t *next) CC_HINT(nonnull);
fr_bio_t *fr_bio_mem_source_alloc(TALLOC_CTX *ctx, size_t buffer_size, fr_bio_t *next) CC_HINT(nonnull);