[arch-commits] Commit in libid3tag/trunk (3 files)

Eric Bélanger eric at archlinux.org
Sat Jul 3 19:30:28 UTC 2010


    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  <kurt at roeckx.be>
+##
+## 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
+
+ at 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 <andreas at fatal.se>
+##
+## 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.
+
+ at 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"
+}




More information about the arch-commits mailing list