summaryrefslogtreecommitdiff
path: root/extra/libcdio
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2013-01-16 00:05:27 -0800
committerroot <root@rshg054.dnsready.net>2013-01-16 00:05:27 -0800
commite1c991185c594db7cc8978ed0239ebca4d37560e (patch)
tree4194e204102f73813c57aed0afba08fd06e38999 /extra/libcdio
parent733e4f771063834ef4d8f31af1dcac95d55e3c3e (diff)
Wed Jan 16 00:05:27 PST 2013
Diffstat (limited to 'extra/libcdio')
-rw-r--r--extra/libcdio/PKGBUILD23
-rw-r--r--extra/libcdio/udf-Dont-return-freed-memory-from-udf_fopen.patch33
2 files changed, 46 insertions, 10 deletions
diff --git a/extra/libcdio/PKGBUILD b/extra/libcdio/PKGBUILD
index a532e0d77..e921dbde2 100644
--- a/extra/libcdio/PKGBUILD
+++ b/extra/libcdio/PKGBUILD
@@ -1,27 +1,30 @@
-# $Id: PKGBUILD 150880 2012-02-23 13:48:06Z allan $
+# $Id: PKGBUILD 175152 2013-01-15 11:44:42Z jgc $
# Maintainer:
# Contributor: damir <damir@archlinux.org>
pkgname=libcdio
-pkgver=0.83
-pkgrel=1
+pkgver=0.90
+pkgrel=2
pkgdesc="GNU Compact Disc Input and Control Library"
arch=('i686' 'x86_64')
license=('GPL3')
url="http://www.gnu.org/software/libcdio/"
-depends=('libcddb' 'ncurses')
+depends=('libcddb' 'ncurses' 'gcc-libs')
options=('!libtool')
install=libcdio.install
source=(http://ftp.gnu.org/gnu/libcdio/${pkgname}-${pkgver}.tar.gz{,.sig}
- libcdio-0.83-linking.patch)
-md5sums=('b9e0f1bccb142e697cd834fe56b6e6fb'
- 'a7864a4b572a1e2a28cc0a05aa4a67d3'
- '5a7f50209c03d5919d5b932f07871af7')
+ libcdio-0.83-linking.patch
+ udf-Dont-return-freed-memory-from-udf_fopen.patch)
+md5sums=('1b245b023fb03a58d030fd2800db3247'
+ '45100d90ea49d6f8481eddf709655c0f'
+ '5a7f50209c03d5919d5b932f07871af7'
+ 'b7b50c989575e5484d3992b455c9df48')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
- patch -Np1 -i $srcdir/libcdio-0.83-linking.patch
- ./configure --prefix=/usr --disable-vcd-info --enable-cpp-progs
+ patch -Np1 -i ../libcdio-0.83-linking.patch
+ patch -Np1 -i ../udf-Dont-return-freed-memory-from-udf_fopen.patch
+ ./configure --prefix=/usr --disable-vcd-info --enable-cpp-progs --disable-static
make
}
diff --git a/extra/libcdio/udf-Dont-return-freed-memory-from-udf_fopen.patch b/extra/libcdio/udf-Dont-return-freed-memory-from-udf_fopen.patch
new file mode 100644
index 000000000..191e35341
--- /dev/null
+++ b/extra/libcdio/udf-Dont-return-freed-memory-from-udf_fopen.patch
@@ -0,0 +1,33 @@
+From 6c0251d145e44b7cdfeb9767c615646fb8f51320 Mon Sep 17 00:00:00 2001
+From: Christophe Fergeau <cfergeau@redhat.com>
+Date: Thu, 22 Nov 2012 13:53:15 +0100
+Subject: [PATCH] udf: Don't return freed memory from udf_fopen
+
+When trying to open a file located in the root directory of the
+UDF filesystem, we call udf_ff_open with the dirent corresponding
+to the root dir and the filename. In this case, udf_ff_open will
+return the same dirent as the one that was passed as argument, so
+we must not free it as we'll be returning it.
+This causes a crash with iso-read when trying to read a file located
+at the root of the image.
+---
+ lib/udf/udf_fs.c | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+diff --git a/lib/udf/udf_fs.c b/lib/udf/udf_fs.c
+index 5f5add7..1e0601e 100644
+--- a/lib/udf/udf_fs.c
++++ b/lib/udf/udf_fs.c
+@@ -257,7 +257,8 @@ udf_fopen(udf_dirent_t *p_udf_root, const char *psz_name)
+ p_udf_root->psz_name, p_udf_root->b_dir,
+ p_udf_root->b_parent);
+ p_udf_file = udf_ff_traverse(p_udf_dirent, psz_token);
+- udf_dirent_free(p_udf_dirent);
++ if (p_udf_file != p_udf_dirent)
++ udf_dirent_free(p_udf_dirent);
+ }
+ else if ( 0 == strncmp("/", psz_name, sizeof("/")) ) {
+ return udf_new_dirent(&p_udf_root->fe, p_udf_root->p_udf,
+--
+1.7.2.5
+