From e1c991185c594db7cc8978ed0239ebca4d37560e Mon Sep 17 00:00:00 2001 From: root Date: Wed, 16 Jan 2013 00:05:27 -0800 Subject: Wed Jan 16 00:05:27 PST 2013 --- extra/libcdio/PKGBUILD | 23 ++++++++------- ...f-Dont-return-freed-memory-from-udf_fopen.patch | 33 ++++++++++++++++++++++ 2 files changed, 46 insertions(+), 10 deletions(-) create mode 100644 extra/libcdio/udf-Dont-return-freed-memory-from-udf_fopen.patch (limited to 'extra/libcdio') 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 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 +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 + -- cgit v1.2.3-54-g00ecf