diff options
-rw-r--r-- | libre/gdbm-static/PKGBUILD | 51 | ||||
-rw-r--r-- | libre/gdbm-static/gdbm-1.10-zeroheaders.patch | 33 |
2 files changed, 84 insertions, 0 deletions
diff --git a/libre/gdbm-static/PKGBUILD b/libre/gdbm-static/PKGBUILD new file mode 100644 index 000000000..7f6e3d0f0 --- /dev/null +++ b/libre/gdbm-static/PKGBUILD @@ -0,0 +1,51 @@ +# Maintainer: Márcio Silva <coadde@parabola.nu> +# based of gdbm + +_pkgname=gdbm +pkgname=gdbm-static +pkgver=1.11 +pkgrel=1 +pkgdesc="GNU database library (static libraries only)" +url="http://www.gnu.org/software/gdbm/gdbm.html" +license=('GPL3') +arch=('i686' 'x86_64' 'armv7h') +depends=('gdbm') +options=('!makeflags' 'staticlibs') +source=(ftp://ftp.gnu.org/gnu/gdbm/${_pkgname}-${pkgver}.tar.gz{,.sig} + gdbm-1.10-zeroheaders.patch) +validpgpkeys=('325F650C4C2B6AD58807327A3602B07F55D0C732') +md5sums=('72c832680cf0999caedbe5b265c8c1bd' + 'SKIP' + 'ac255b10452005237836cd2d3a470733') + +prepare() { + cd "${srcdir}/${_pkgname}-${pkgver}" + + # Prevent gdbm from storing uninitialized memory content + # to database files. This patch improves security, as the + # uninitialized memory might contain sensitive informations + # from other applications. + # https://bugzilla.redhat.com/show_bug.cgi?id=4457 + # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=208927 + patch -Np1 -i ../gdbm-1.10-zeroheaders.patch +} + +build() { + cd "${srcdir}/${_pkgname}-${pkgver}" + ./configure --prefix=/usr --enable-libgdbm-compat + make +} + +check() { + cd "${srcdir}/${_pkgname}-${pkgver}" + make check +} + +package() { + cd "${srcdir}/${_pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install + + # remove conflicting files + rm -vr ${pkgdir}/usr/{bin,include,share} + rm -v ${pkgdir}/usr/lib/lib*.so* +} diff --git a/libre/gdbm-static/gdbm-1.10-zeroheaders.patch b/libre/gdbm-static/gdbm-1.10-zeroheaders.patch new file mode 100644 index 000000000..a268f6bdf --- /dev/null +++ b/libre/gdbm-static/gdbm-1.10-zeroheaders.patch @@ -0,0 +1,33 @@ +diff -up gdbm-1.10/src/falloc.c.zeroheaders gdbm-1.10/src/falloc.c +--- gdbm-1.10/src/falloc.c.zeroheaders 2011-11-11 11:59:11.000000000 +0100 ++++ gdbm-1.10/src/falloc.c 2011-11-14 17:34:32.487604027 +0100 +@@ -255,7 +255,7 @@ push_avail_block (GDBM_FILE dbf) + + + /* Split the header block. */ +- temp = (avail_block *) malloc (av_size); ++ temp = (avail_block *) calloc (1, av_size); + if (temp == NULL) _gdbm_fatal (dbf, _("malloc error")); + /* Set the size to be correct AFTER the pop_avail_block. */ + temp->size = dbf->header->avail.size; +diff -up gdbm-1.10/src/gdbmopen.c.zeroheaders gdbm-1.10/src/gdbmopen.c +--- gdbm-1.10/src/gdbmopen.c.zeroheaders 2011-11-11 19:39:42.000000000 +0100 ++++ gdbm-1.10/src/gdbmopen.c 2011-11-14 17:33:24.867608650 +0100 +@@ -264,7 +264,7 @@ gdbm_open (const char *file, int block_s + (dbf->header->block_size - sizeof (hash_bucket)) + / sizeof (bucket_element) + 1; + dbf->header->bucket_size = dbf->header->block_size; +- dbf->bucket = (hash_bucket *) malloc (dbf->header->bucket_size); ++ dbf->bucket = (hash_bucket *) calloc (1, dbf->header->bucket_size); + if (dbf->bucket == NULL) + { + gdbm_close (dbf); +@@ -456,7 +456,7 @@ _gdbm_init_cache(GDBM_FILE dbf, size_t s + for(index = 0; index < size; index++) + { + (dbf->bucket_cache[index]).ca_bucket +- = (hash_bucket *) malloc (dbf->header->bucket_size); ++ = (hash_bucket *) calloc (1, dbf->header->bucket_size); + if ((dbf->bucket_cache[index]).ca_bucket == NULL) + { + gdbm_errno = GDBM_MALLOC_ERROR; |