From f2633333178ca2e9cbb032c2bab3a4f323cde737 Mon Sep 17 00:00:00 2001 From: wollman Date: Thu, 15 Jun 1995 18:30:44 +0000 Subject: [PATCH] Correctly calculate length of local-domain socket name for RSRR server. --- usr.sbin/mrouted/rsrr.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/usr.sbin/mrouted/rsrr.c b/usr.sbin/mrouted/rsrr.c index 34eedabbe8aa..ceaf4caddd12 100644 --- a/usr.sbin/mrouted/rsrr.c +++ b/usr.sbin/mrouted/rsrr.c @@ -33,6 +33,8 @@ #ifdef RSRR #include "defs.h" +#include +#include /* Taken from prune.c */ /* @@ -84,7 +86,13 @@ rsrr_init() bzero((char *) &serv_addr, sizeof(serv_addr)); serv_addr.sun_family = AF_UNIX; strcpy(serv_addr.sun_path, RSRR_SERV_PATH); +#if BSD >= 199103 + servlen = offsetof(struct sockaddr_un, sun_path) + + strlen(serv_addr.sun_path); + serv_addr.sun_len = servlen; +#else servlen = sizeof(serv_addr.sun_family) + strlen(serv_addr.sun_path); +#endif if (bind(rsrr_socket, (struct sockaddr *) &serv_addr, servlen) < 0) log(LOG_ERR, errno, "Can't bind RSRR socket");