diff options
author | Parabola <dev@list.parabolagnulinux.org> | 2011-04-05 14:26:38 +0000 |
---|---|---|
committer | Parabola <dev@list.parabolagnulinux.org> | 2011-04-05 14:26:38 +0000 |
commit | 415856bdd4f48ab4f2732996f0bae58595092bbe (patch) | |
tree | ede2018b591f6dfb477fe9341ba17b9bc000fab9 /community/librsync |
Tue Apr 5 14:26:38 UTC 2011
Diffstat (limited to 'community/librsync')
-rw-r--r-- | community/librsync/ChangeLog | 2 | ||||
-rw-r--r-- | community/librsync/PKGBUILD | 35 | ||||
-rw-r--r-- | community/librsync/lfs-overflow.patch | 55 |
3 files changed, 92 insertions, 0 deletions
diff --git a/community/librsync/ChangeLog b/community/librsync/ChangeLog new file mode 100644 index 000000000..4cdab3f13 --- /dev/null +++ b/community/librsync/ChangeLog @@ -0,0 +1,2 @@ +2007-06-28 tardo <tardo@nagi-fanboi.net> +* Recompiled with --with-pic to fix relocation errors diff --git a/community/librsync/PKGBUILD b/community/librsync/PKGBUILD new file mode 100644 index 000000000..d0fd33cf3 --- /dev/null +++ b/community/librsync/PKGBUILD @@ -0,0 +1,35 @@ +# $Id: PKGBUILD 11387 2010-02-10 04:50:34Z foutrelis $ +# Maintainer: Evangelos Foutras <foutrelis@gmail.com> +# Contributor: Alessio 'mOLOk' Bolognino <themolok@gmail.com> +# Contributor: Christoph 'delmonico' Neuroth <delmonico@gmx.net> + +pkgname=librsync +pkgver=0.9.7 +pkgrel=5 +pkgdesc="A free software library that implements the rsync remote-delta algorithm (rdiff)" +arch=('i686' 'x86_64') +url="http://librsync.sourceforge.net/" +license=('GPL') +depends=('popt' 'zlib' 'bzip2') +options=('!libtool') +source=(http://downloads.sourceforge.net/sourceforge/librsync/$pkgname-$pkgver.tar.gz + lfs-overflow.patch) +md5sums=('24cdb6b78f45e0e83766903fd4f6bc84' + 'e18536482c0a32e7004c46eac6a53b2d') + +build() { + cd "$srcdir/$pkgname-$pkgver" + + # Patch for large files (https://bugzilla.redhat.com/show_bug.cgi?id=207940) + patch -Np1 -i "$srcdir/lfs-overflow.patch" || return 1 + + ./configure --prefix=/usr --mandir=/usr/share/man --enable-shared + make || return 1 +} + +package() { + cd "$srcdir/$pkgname-$pkgver" + make DESTDIR="$pkgdir" install || return 1 +} + +# vim:set ts=2 sw=2 et: diff --git a/community/librsync/lfs-overflow.patch b/community/librsync/lfs-overflow.patch new file mode 100644 index 000000000..714fbaa84 --- /dev/null +++ b/community/librsync/lfs-overflow.patch @@ -0,0 +1,55 @@ +Files over 4 Gig in size encountered an error resulting in an unsuccessful copy as +per (upstream) Bug Request ID: 1110812. + +The assignment 'len = job->basis_len' sometimes overflows. Made changes so that +assignment is done only when appropriate. + +rs_mdfour variables B and C were observed to overflow their 'int' definition. +This has been changed to 'unsigned int', which is now consistent with like coding +in the openssl package. + +--- librsync-0.9.7/mdfour.h 2004-02-08 00:17:57.000000000 +0100 ++++ librsync-0.9.7/mdfour.h.lfs_overflow 2006-03-10 11:44:10.000000000 +0100 +@@ -1,7 +1,7 @@ + /*= -*- c-basic-offset: 4; indent-tabs-mode: nil; -*- + * + * librsync -- the library for network deltas +- * $Id: mdfour.h,v 1.7 2003/10/17 16:15:21 abo Exp $ ++ * $Id: mdfour.h,v 1.8 2006/03/10 10:44:10 abo Exp $ + * + * Copyright (C) 2000, 2001 by Martin Pool <mbp@samba.org> + * Copyright (C) 2002, 2003 by Donovan Baarda <abo@minkirri.apana.org.au> +@@ -24,7 +24,7 @@ + #include "types.h" + + struct rs_mdfour { +- int A, B, C, D; ++ unsigned int A, B, C, D; + #if HAVE_UINT64 + uint64_t totalN; + #else +--- librsync-0.9.7/patch.c 2004-09-17 23:35:50.000000000 +0200 ++++ librsync-0.9.7/patch.c.lfs_overflow 2006-03-10 11:44:10.000000000 +0100 +@@ -1,7 +1,7 @@ + /*= -*- c-basic-offset: 4; indent-tabs-mode: nil; -*- + * + * librsync -- the library for network deltas +- * $Id: patch.c,v 1.30 2004/09/10 02:48:58 mbp Exp $ ++ * $Id: patch.c,v 1.31 2006/03/10 10:44:10 abo Exp $ + * + * Copyright (C) 2000, 2001 by Martin Pool <mbp@samba.org> + * +@@ -214,12 +214,9 @@ + void *buf, *ptr; + rs_buffers_t *buffs = job->stream; + +- len = job->basis_len; +- + /* copy only as much as will fit in the output buffer, so that we + * don't have to block or store the input. */ +- if (len > buffs->avail_out) +- len = buffs->avail_out; ++ len = (buffs->avail_out < job->basis_len) ? buffs->avail_out : job->basis_len; + + if (!len) + return RS_BLOCKED; |