Date: Saturday, July 3, 2010 @ 15:30:28 Author: eric Revision: 84729 upgpkg: libid3tag 0.15.1b-5 Added encoding fixes (close FS#18595), Added gperf makedepends
Added: libid3tag/trunk/10_utf16.diff libid3tag/trunk/11_unknown_encoding.diff Modified: libid3tag/trunk/PKGBUILD --------------------------+ 10_utf16.diff | 48 +++++++++++++++++++++++++++++++++++++++++++++ 11_unknown_encoding.diff | 37 ++++++++++++++++++++++++++++++++++ PKGBUILD | 28 +++++++++++++++++--------- 3 files changed, 104 insertions(+), 9 deletions(-) Added: 10_utf16.diff =================================================================== --- 10_utf16.diff (rev 0) +++ 10_utf16.diff 2010-07-03 19:30:28 UTC (rev 84729) @@ -0,0 +1,48 @@ +#! /bin/sh -e +## 10_utf16.dpatch by <[email protected]> +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Handle bogus UTF16 sequences that have a length that is not +## DP: an even number of 8 bit characters. + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +...@dpatch@ +diff -urNad libid3tag-0.15.1b/utf16.c /tmp/dpep.tKvO7a/libid3tag-0.15.1b/utf16.c +--- libid3tag-0.15.1b/utf16.c 2006-01-13 15:26:29.000000000 +0100 ++++ /tmp/dpep.tKvO7a/libid3tag-0.15.1b/utf16.c 2006-01-13 15:27:19.000000000 +0100 +@@ -282,5 +282,18 @@ + + free(utf16); + ++ if (end == *ptr && length % 2 != 0) ++ { ++ /* We were called with a bogus length. It should always ++ * be an even number. We can deal with this in a few ways: ++ * - Always give an error. ++ * - Try and parse as much as we can and ++ * - return an error if we're called again when we ++ * already tried to parse everything we can. ++ * - tell that we parsed it, which is what we do here. ++ */ ++ (*ptr)++; ++ } ++ + return ucs4; + } Added: 11_unknown_encoding.diff =================================================================== --- 11_unknown_encoding.diff (rev 0) +++ 11_unknown_encoding.diff 2010-07-03 19:30:28 UTC (rev 84729) @@ -0,0 +1,37 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 11_unknown_encoding.dpatch by Andreas Henriksson <[email protected]> +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: In case of an unknown/invalid encoding, id3_parse_string() will +## DP: return NULL, but the return value wasn't checked resulting +## DP: in segfault in id3_ucs4_length(). This is the only place +## DP: the return value wasn't checked. + +...@dpatch@ +diff -urNad libid3tag-0.15.1b~/compat.gperf libid3tag-0.15.1b/compat.gperf +--- libid3tag-0.15.1b~/compat.gperf 2004-01-23 09:41:32.000000000 +0000 ++++ libid3tag-0.15.1b/compat.gperf 2007-01-14 14:36:53.000000000 +0000 +@@ -236,6 +236,10 @@ + + encoding = id3_parse_uint(&data, 1); + string = id3_parse_string(&data, end - data, encoding, 0); ++ if (!string) ++ { ++ continue; ++ } + + if (id3_ucs4_length(string) < 4) { + free(string); +diff -urNad libid3tag-0.15.1b~/parse.c libid3tag-0.15.1b/parse.c +--- libid3tag-0.15.1b~/parse.c 2004-01-23 09:41:32.000000000 +0000 ++++ libid3tag-0.15.1b/parse.c 2007-01-14 14:37:34.000000000 +0000 +@@ -165,6 +165,9 @@ + case ID3_FIELD_TEXTENCODING_UTF_8: + ucs4 = id3_utf8_deserialize(ptr, length); + break; ++ default: ++ /* FIXME: Unknown encoding! Print warning? */ ++ return NULL; + } + + if (ucs4 && !full) { Modified: PKGBUILD =================================================================== --- PKGBUILD 2010-07-03 19:30:16 UTC (rev 84728) +++ PKGBUILD 2010-07-03 19:30:28 UTC (rev 84729) @@ -3,21 +3,31 @@ pkgname=libid3tag pkgver=0.15.1b -pkgrel=4 +pkgrel=5 pkgdesc="library for id3 tagging" arch=('i686' 'x86_64') url="http://www.underbit.com/products/mad/" license=('GPL') depends=('zlib') +makedepends=('gperf') options=(!libtool) -source=(ftp://ftp.mars.org/pub/mpeg/$pkgname-$pkgver.tar.gz id3tag.pc) -md5sums=('e5808ad997ba32c498803822078748c3' '8bb41fd814fafcc37ec8bc88f5545a4a') -sha1sums=('4d867e8a8436e73cd7762fe0e85958e35f1e4306' '27753135177029bd443be188307c2934dd3caa13') +source=(ftp://ftp.mars.org/pub/mpeg/${pkgname}-${pkgver}.tar.gz \ + id3tag.pc 10_utf16.diff 11_unknown_encoding.diff) +md5sums=('e5808ad997ba32c498803822078748c3' '8bb41fd814fafcc37ec8bc88f5545a4a'\ + '4f9df4011e6a8c23240fff5de2d05f6e' '3ca856b97924d48a0fdfeff0bd83ce7d') +sha1sums=('4d867e8a8436e73cd7762fe0e85958e35f1e4306' '27753135177029bd443be188307c2934dd3caa13'\ + '40fbb2e790adfa98703d1a33bbd73f4e1da3d566' 'ae4dc32185ee2257e4269ca482d94b0cd5440b7e') build() { - cd "$srcdir/$pkgname-$pkgver" - ./configure --prefix=/usr || return 1 - make || return 1 - make DESTDIR="$pkgdir" install || return 1 - install -D -m644 "$srcdir/id3tag.pc" "$pkgdir/usr/lib/pkgconfig/id3tag.pc" + cd "${srcdir}/${pkgname}-${pkgver}" + patch -p1 < ../10_utf16.diff + patch -p1 < ../11_unknown_encoding.diff + ./configure --prefix=/usr + make } + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install + install -D -m644 "${srcdir}/id3tag.pc" "${pkgdir}/usr/lib/pkgconfig/id3tag.pc" +}
