diff options
author | eik <eik@FreeBSD.org> | 2004-04-28 05:59:18 +0800 |
---|---|---|
committer | eik <eik@FreeBSD.org> | 2004-04-28 05:59:18 +0800 |
commit | d594b991d3726803d2856ff37b4e1a88a90f767e (patch) | |
tree | c5408f764b82782550a5b347c6f0bf637ea51671 /net/rsync | |
parent | b94110e95acb66a9149e9699e0434a641700a188 (diff) | |
download | freebsd-ports-gnome-d594b991d3726803d2856ff37b4e1a88a90f767e.tar.gz freebsd-ports-gnome-d594b991d3726803d2856ff37b4e1a88a90f767e.tar.zst freebsd-ports-gnome-d594b991d3726803d2856ff37b4e1a88a90f767e.zip |
Update to version 2.6.1
<http://rsync.samba.org/ftp/rsync/rsync-2.6.1-NEWS>:
SECURITY FIXES:
- Paths sent to an rsync daemon are more thoroughly sanitized when
chroot is not used. If you're running a non-read-only rsync
daemon with chroot disabled, *please upgrade*, ESPECIALLY if the
user privs you run rsync under is anything above "nobody".
Approved by: marcus (portmgr)
Diffstat (limited to 'net/rsync')
-rw-r--r-- | net/rsync/Makefile | 29 | ||||
-rw-r--r-- | net/rsync/distinfo | 4 | ||||
-rw-r--r-- | net/rsync/files/extra-patch-socket.c | 178 |
3 files changed, 14 insertions, 197 deletions
diff --git a/net/rsync/Makefile b/net/rsync/Makefile index cc20030bc4c0..f2f558a662e6 100644 --- a/net/rsync/Makefile +++ b/net/rsync/Makefile @@ -7,12 +7,15 @@ # PORTNAME= rsync -PORTVERSION= 2.6.0 +PORTVERSION= 2.6.1 CATEGORIES= net ipv6 -MASTER_SITES= ftp://samba.anu.edu.au/pub/rsync/ \ - ftp://sunsite.auc.dk/pub/unix/rsync/ \ - ftp://ftp.sunet.se/pub/unix/admin/rsync/ \ - ftp://ftp.fu-berlin.de/pub/unix/network/rsync/ +MASTER_SITES= http://rsync.samba.org/ftp/%SUBDIR%/ \ + ftp://rsync.samba.org/pub/%SUBDIR%/ \ + ftp://samba.anu.edu.au/pub/%SUBDIR%/ \ + ftp://sunsite.auc.dk/pub/unix/%SUBDIR%/ \ + ftp://ftp.sunet.se/pub/unix/admin/%SUBDIR%/ \ + ftp://ftp.fu-berlin.de/pub/unix/network/%SUBDIR%/ +MASTER_SITE_SUBDIR= rsync MAINTAINER= eik@FreeBSD.org COMMENT= A network file distribution/synchronization utility @@ -21,9 +24,11 @@ COMMENT= A network file distribution/synchronization utility LIB_DEPENDS= popt.0:${PORTSDIR}/devel/popt .endif +USE_RC_SUBR= yes USE_REINPLACE= yes GNU_CONFIGURE= yes -CONFIGURE_ARGS= --disable-debug +CONFIGURE_ARGS= --disable-debug \ + --with-rsyncd-conf=${PREFIX}/etc/rsyncd.conf CONFIGURE_TARGET= --build=${MACHINE_ARCH}-portbld-freebsd${OSREL} .if defined(WITH_POPT_PORT) @@ -39,12 +44,6 @@ PORTDOCS= NEWS README csprotocol.txt tech_report.tex .include <bsd.port.pre.mk> -.if ${OSVERSION} >= 500038 -RC_SUBR?= /etc/rc.subr -.else -USE_RC_SUBR= yes -.endif - SED_SCRIPT+= -e 's,%%PREFIX%%,${PREFIX},g' \ -e 's,%%RC_SUBR%%,${RC_SUBR},g' @@ -62,10 +61,6 @@ CONFIGURE_ARGS+= --enable-ipv6 CONFIGURE_ARGS+= --disable-ipv6 .endif -.if ${OSVERSION} >= 500043 -EXTRA_PATCHES= ${FILESDIR}/extra-patch-socket.c -.endif - MAN1= rsync.1 MAN5= rsyncd.conf.5 @@ -88,7 +83,7 @@ post-build: post-install: @${STRIP_CMD} ${PREFIX}/bin/rsync @${INSTALL_DATA} ${FILESDIR}/rsyncd.conf.sample ${PREFIX}/etc/ - @[ -f ${PREFIX}/etc/rsyncd.conf ] || cp ${PREFIX}/etc/rsyncd.conf.sample ${PREFIX}/etc/rsyncd.conf + @[ -f ${PREFIX}/etc/rsyncd.conf ] || ${CP} ${PREFIX}/etc/rsyncd.conf.sample ${PREFIX}/etc/rsyncd.conf @${INSTALL_SCRIPT} ${WRKDIR}/rsyncd.sh ${PREFIX}/etc/rc.d/ .if !defined(NOPORTDOCS) @${MKDIR} ${DOCSDIR} diff --git a/net/rsync/distinfo b/net/rsync/distinfo index 202cabc56ca1..975cb6c4b2a3 100644 --- a/net/rsync/distinfo +++ b/net/rsync/distinfo @@ -1,2 +1,2 @@ -MD5 (rsync-2.6.0.tar.gz) = 3f24bf31aec0a657eb3b6844c3f09f21 -SIZE (rsync-2.6.0.tar.gz) = 464920 +MD5 (rsync-2.6.1.tar.gz) = ec09e62961c8edd0f9d3710b5ecb5b16 +SIZE (rsync-2.6.1.tar.gz) = 511412 diff --git a/net/rsync/files/extra-patch-socket.c b/net/rsync/files/extra-patch-socket.c deleted file mode 100644 index dbfb08d36ba7..000000000000 --- a/net/rsync/files/extra-patch-socket.c +++ /dev/null @@ -1,178 +0,0 @@ -Index: socket.c -diff -u socket.c.orig socket.c ---- socket.c.orig Mon Jan 27 12:35:09 2003 -+++ socket.c Sat Feb 8 00:06:59 2003 -@@ -292,11 +292,11 @@ - * @param bind_address Local address to bind, or NULL to allow it to - * default. - **/ --static int open_socket_in(int type, int port, const char *bind_address, -- int af_hint) -+static int *open_socket_in(int type, int port, const char *bind_address, -+ int af_hint) - { - int one=1; -- int s; -+ int *s, *socks, maxs; - struct addrinfo hints, *all_ai, *resp; - char portbuf[10]; - int error; -@@ -310,41 +310,65 @@ - if (error) { - rprintf(FERROR, RSYNC_NAME ": getaddrinfo: bind address %s: %s\n", - bind_address, gai_strerror(error)); -- return -1; -+ return NULL; -+ } -+ -+ /* Count max number of sockets we may open */ -+ for (maxs = 0, resp = all_ai; resp; resp = resp->ai_next, maxs++) -+ ; -+ socks = malloc((maxs + 1) * sizeof(int)); -+ if (!socks) { -+ rprintf(FERROR, -+ RSYNC_NAME "couldn't allocate memory for sockets"); -+ return NULL; - } - - /* We may not be able to create the socket, if for example the - * machine knows about IPv6 in the C library, but not in the - * kernel. */ -+ *socks = 0; /* num of sockets counter at start of array */ -+ s = socks + 1; - for (resp = all_ai; resp; resp = resp->ai_next) { -- s = socket(resp->ai_family, resp->ai_socktype, -+ *s = socket(resp->ai_family, resp->ai_socktype, - resp->ai_protocol); - -- if (s == -1) -+ if (*s == -1) - /* See if there's another address that will work... */ - continue; - -- setsockopt(s, SOL_SOCKET, SO_REUSEADDR, -+ setsockopt(*s, SOL_SOCKET, SO_REUSEADDR, - (char *)&one, sizeof one); - -+#ifdef IPV6_V6ONLY -+ if (resp->ai_family == AF_INET6) -+ setsockopt(*s, IPPROTO_IPV6, IPV6_V6ONLY, -+ (char *)&one, sizeof one); -+#endif -+ - /* now we've got a socket - we need to bind it */ -- if (bind(s, all_ai->ai_addr, all_ai->ai_addrlen) < 0) { -+ if (bind(*s, resp->ai_addr, resp->ai_addrlen) < 0) { - /* Nope, try another */ -- close(s); -+ close(*s); - continue; - } - -- freeaddrinfo(all_ai); -- return s; -+ (*socks)++; -+ s++; - } - -- rprintf(FERROR, RSYNC_NAME ": open inbound socket on port %d failed: " -- "%s\n", -- port, -- strerror(errno)); -+ if (all_ai) -+ freeaddrinfo(all_ai); - -- freeaddrinfo(all_ai); -- return -1; -+ if (*socks == 0) { -+ rprintf(FERROR, -+ RSYNC_NAME ": open inbound socket on port %d failed: " -+ "%s\n", -+ port, -+ strerror(errno)); -+ free(socks); -+ return NULL; -+ } -+ return socks; - } - - -@@ -376,19 +400,29 @@ - - void start_accept_loop(int port, int (*fn)(int, int)) - { -- int s; -+ fd_set deffds; -+ int *s, maxfd, i, j; - extern char *bind_address; - extern int default_af_hint; - - /* open an incoming socket */ - s = open_socket_in(SOCK_STREAM, port, bind_address, default_af_hint); -- if (s == -1) -+ if (s == NULL) - exit_cleanup(RERR_SOCKETIO); - - /* ready to listen */ -- if (listen(s, 5) == -1) { -- close(s); -- exit_cleanup(RERR_SOCKETIO); -+ FD_ZERO(&deffds); -+ maxfd = -1; -+ for (i = 1; i <= *s; i++) { -+ if (listen(s[i], 5) == -1) { -+ for (j = 1; j <= i; j++) -+ close(s[j]); -+ free(s); -+ exit_cleanup(RERR_SOCKETIO); -+ } -+ FD_SET(s[i], &deffds); -+ if (maxfd < s[i]) -+ maxfd = s[i]; - } - - -@@ -406,16 +440,20 @@ - forever */ - log_close(); - -- FD_ZERO(&fds); -- FD_SET(s, &fds); -+ FD_COPY(&deffds, &fds); - -- if (select(s+1, &fds, NULL, NULL, NULL) != 1) { -+ if (select(maxfd + 1, &fds, NULL, NULL, NULL) != 1) { - continue; - } - -- if(!FD_ISSET(s, &fds)) continue; -- -- fd = accept(s,(struct sockaddr *)&addr,&addrlen); -+ fd = -1; -+ for (i = 1; i <= *s; i++) { -+ if (FD_ISSET(s[i], &fds)) { -+ fd = accept(s[i], (struct sockaddr *)&addr, -+ &addrlen); -+ break; -+ } -+ } - - if (fd == -1) continue; - -@@ -430,7 +468,7 @@ - - if ((pid = fork()) == 0) { - int ret; -- close(s); -+ close(s[i]); - /* open log file in child before possibly giving - up privileges */ - log_open(); -@@ -452,6 +490,7 @@ - close(fd); - } - } -+ free(s); - } - - |