summaryrefslogtreecommitdiff
path: root/extra/rsync
diff options
context:
space:
mode:
authorNicolás Reynolds <fauno@endefensadelsl.org>2014-04-22 03:45:42 +0000
committerNicolás Reynolds <fauno@endefensadelsl.org>2014-04-22 03:45:42 +0000
commitd4b7ceefdfb9c828799749419e8f8f7a36c2d7b8 (patch)
treee33b9107bd1b9ee167a7d4ef8432070c31cfc48f /extra/rsync
parentc925b627b01ec8ab7044dd26b245ac0b99992d0e (diff)
Tue Apr 22 03:41:19 UTC 2014
Diffstat (limited to 'extra/rsync')
-rw-r--r--extra/rsync/CVE-2014-2855.patch83
-rw-r--r--extra/rsync/PKGBUILD17
2 files changed, 95 insertions, 5 deletions
diff --git a/extra/rsync/CVE-2014-2855.patch b/extra/rsync/CVE-2014-2855.patch
new file mode 100644
index 000000000..b73e77be9
--- /dev/null
+++ b/extra/rsync/CVE-2014-2855.patch
@@ -0,0 +1,83 @@
+From 0dedfbce2c1b851684ba658861fe9d620636c56a Mon Sep 17 00:00:00 2001
+From: Wayne Davison <wayned@samba.org>
+Date: Sun, 13 Apr 2014 13:44:58 -0700
+Subject: [PATCH] Avoid infinite wait reading secrets file.
+
+---
+ authenticate.c | 24 +++++++++++++-----------
+ 1 files changed, 13 insertions(+), 11 deletions(-)
+
+diff --git a/authenticate.c b/authenticate.c
+index 3381b8c..c92746c 100644
+--- a/authenticate.c
++++ b/authenticate.c
+@@ -102,15 +102,16 @@ static const char *check_secret(int module, const char *user, const char *group,
+ char pass2[MAX_DIGEST_LEN*2];
+ const char *fname = lp_secrets_file(module);
+ STRUCT_STAT st;
+- int fd, ok = 1;
++ int ok = 1;
+ int user_len = strlen(user);
+ int group_len = group ? strlen(group) : 0;
+ char *err;
++ FILE *fh;
+
+- if (!fname || !*fname || (fd = open(fname, O_RDONLY)) < 0)
++ if (!fname || !*fname || (fh = fopen(fname, "r")) == NULL)
+ return "no secrets file";
+
+- if (do_fstat(fd, &st) == -1) {
++ if (do_fstat(fileno(fh), &st) == -1) {
+ rsyserr(FLOG, errno, "fstat(%s)", fname);
+ ok = 0;
+ } else if (lp_strict_modes(module)) {
+@@ -123,29 +124,30 @@ static const char *check_secret(int module, const char *user, const char *group,
+ }
+ }
+ if (!ok) {
+- close(fd);
++ fclose(fh);
+ return "ignoring secrets file";
+ }
+
+ if (*user == '#') {
+ /* Reject attempt to match a comment. */
+- close(fd);
++ fclose(fh);
+ return "invalid username";
+ }
+
+ /* Try to find a line that starts with the user (or @group) name and a ':'. */
+ err = "secret not found";
+- while ((user || group) && read_line_old(fd, line, sizeof line, 1)) {
+- const char **ptr, *s;
++ while ((user || group) && fgets(line, sizeof line, fh) != NULL) {
++ const char **ptr, *s = strtok(line, "\n\r");
+ int len;
+- if (*line == '@') {
++ if (!s)
++ continue;
++ if (*s == '@') {
+ ptr = &group;
+ len = group_len;
+- s = line+1;
++ s++;
+ } else {
+ ptr = &user;
+ len = user_len;
+- s = line;
+ }
+ if (!*ptr || strncmp(s, *ptr, len) != 0 || s[len] != ':')
+ continue;
+@@ -158,7 +160,7 @@ static const char *check_secret(int module, const char *user, const char *group,
+ *ptr = NULL; /* Don't look for name again. */
+ }
+
+- close(fd);
++ fclose(fh);
+
+ memset(line, 0, sizeof line);
+ memset(pass2, 0, sizeof pass2);
+--
+1.7.0.4
+
diff --git a/extra/rsync/PKGBUILD b/extra/rsync/PKGBUILD
index 4744ab5b8..75710119d 100644
--- a/extra/rsync/PKGBUILD
+++ b/extra/rsync/PKGBUILD
@@ -1,25 +1,32 @@
-# $Id: PKGBUILD 195476 2013-09-30 19:07:27Z pierre $
+# $Id: PKGBUILD 211621 2014-04-21 17:22:50Z jgc $
pkgname=rsync
pkgver=3.1.0
-pkgrel=1
+pkgrel=2
pkgdesc="A file transfer program to keep remote files in sync"
arch=('i686' 'x86_64')
-url="http://samba.anu.edu.au/rsync/"
+url="http://rsync.samba.org/"
license=('GPL3')
depends=('perl' 'popt')
backup=('etc/rsyncd.conf' 'etc/xinetd.d/rsync')
source=("http://rsync.samba.org/ftp/rsync/$pkgname-$pkgver.tar.gz"
"http://rsync.samba.org/ftp/rsync/$pkgname-$pkgver.tar.gz.asc"
'rsyncd.conf' 'rsync.xinetd' 'rsyncd.service'
- 'rsyncd.socket' 'rsyncd@.service')
+ 'rsyncd.socket' 'rsyncd@.service'
+ 'CVE-2014-2855.patch')
md5sums=('3be148772a33224771a8d4d2a028b132'
'SKIP'
'bce64d122a8e0f86872a4a21a03bc7f3'
'ea3e9277dc908bc51f9eddc0f6b935c1'
'084140868d38cf3e937a2db716d47c0f'
'ae4c381e0c02d6132c7f6ded3f473041'
- '53f94e613e0bc502d38dd61bd2cd7636')
+ '53f94e613e0bc502d38dd61bd2cd7636'
+ 'dacfe77bd72fbf6b6ba65c741c57f74c')
+
+prepare() {
+ cd $pkgname-$pkgver
+ patch -Np1 -i ../CVE-2014-2855.patch
+}
build() {
cd "$srcdir/$pkgname-$pkgver"