summaryrefslogtreecommitdiff
path: root/package/libid3tag
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2013-10-16 12:55:52 +0200
committerWaldemar Brodkorb <wbx@openadk.org>2013-10-16 12:55:52 +0200
commit232f2bdaac85236e2a89fde387359dc8d12c6ff0 (patch)
tree08d33ef841ef9494ae611e55a524a5dbcc743029 /package/libid3tag
parent1783cc1ff51b6aee8dfe94fff2d80013f92cffdd (diff)
finally found the problem for oom killer with mpd, add Debian patches which fixes it, evil ยต in ID3 tag
Diffstat (limited to 'package/libid3tag')
-rw-r--r--package/libid3tag/Makefile2
-rw-r--r--package/libid3tag/patches/patch-compat_gperf13
-rw-r--r--package/libid3tag/patches/patch-genre_dat22
-rw-r--r--package/libid3tag/patches/patch-genre_dat_in11
-rw-r--r--package/libid3tag/patches/patch-parse_c12
-rw-r--r--package/libid3tag/patches/patch-utf16_c21
6 files changed, 80 insertions, 1 deletions
diff --git a/package/libid3tag/Makefile b/package/libid3tag/Makefile
index 972daf556..d2819bf9f 100644
--- a/package/libid3tag/Makefile
+++ b/package/libid3tag/Makefile
@@ -5,7 +5,7 @@ include ${TOPDIR}/rules.mk
PKG_NAME:= libid3tag
PKG_VERSION:= 0.15.1b
-PKG_RELEASE:= 1
+PKG_RELEASE:= 2
PKG_MD5SUM:= e5808ad997ba32c498803822078748c3
PKG_DESCR:= an ID3 tag manipulation library
PKG_SECTION:= libs
diff --git a/package/libid3tag/patches/patch-compat_gperf b/package/libid3tag/patches/patch-compat_gperf
new file mode 100644
index 000000000..a70837638
--- /dev/null
+++ b/package/libid3tag/patches/patch-compat_gperf
@@ -0,0 +1,13 @@
+--- libid3tag-0.15.1b.orig/compat.gperf 2004-01-23 10:41:32.000000000 +0100
++++ libid3tag-0.15.1b/compat.gperf 2013-10-16 12:34:31.000000000 +0200
+@@ -236,6 +236,10 @@ int id3_compat_fixup(struct id3_tag *tag
+
+ 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 --git a/package/libid3tag/patches/patch-genre_dat b/package/libid3tag/patches/patch-genre_dat
new file mode 100644
index 000000000..6b727397b
--- /dev/null
+++ b/package/libid3tag/patches/patch-genre_dat
@@ -0,0 +1,22 @@
+--- libid3tag-0.15.1b.orig/genre.dat 2004-02-17 03:34:39.000000000 +0100
++++ libid3tag-0.15.1b/genre.dat 2013-10-16 12:34:37.000000000 +0200
+@@ -277,8 +277,8 @@ static id3_ucs4_t const genre_PUNK_ROCK[
+ { 'P', 'u', 'n', 'k', ' ', 'R', 'o', 'c', 'k', 0 };
+ static id3_ucs4_t const genre_DRUM_SOLO[] =
+ { 'D', 'r', 'u', 'm', ' ', 'S', 'o', 'l', 'o', 0 };
+-static id3_ucs4_t const genre_A_CAPPELLA[] =
+- { 'A', ' ', 'C', 'a', 'p', 'p', 'e', 'l', 'l', 'a', 0 };
++static id3_ucs4_t const genre_A_CAPELLA[] =
++ { 'A', ' ', 'C', 'a', 'p', 'e', 'l', 'l', 'a', 0 };
+ static id3_ucs4_t const genre_EURO_HOUSE[] =
+ { 'E', 'u', 'r', 'o', '-', 'H', 'o', 'u', 's', 'e', 0 };
+ static id3_ucs4_t const genre_DANCE_HALL[] =
+@@ -452,7 +452,7 @@ static id3_ucs4_t const *const genre_tab
+ genre_DUET,
+ genre_PUNK_ROCK,
+ genre_DRUM_SOLO,
+- genre_A_CAPPELLA,
++ genre_A_CAPELLA,
+ genre_EURO_HOUSE,
+ genre_DANCE_HALL,
+ genre_GOA,
diff --git a/package/libid3tag/patches/patch-genre_dat_in b/package/libid3tag/patches/patch-genre_dat_in
new file mode 100644
index 000000000..592fd6746
--- /dev/null
+++ b/package/libid3tag/patches/patch-genre_dat_in
@@ -0,0 +1,11 @@
+--- libid3tag-0.15.1b.orig/genre.dat.in 2004-01-23 10:41:32.000000000 +0100
++++ libid3tag-0.15.1b/genre.dat.in 2013-10-16 12:34:37.000000000 +0200
+@@ -153,7 +153,7 @@ Freestyle
+ Duet
+ Punk Rock
+ Drum Solo
+-A Cappella
++A Capella
+ Euro-House
+ Dance Hall
+ Goa
diff --git a/package/libid3tag/patches/patch-parse_c b/package/libid3tag/patches/patch-parse_c
new file mode 100644
index 000000000..6e09c5e26
--- /dev/null
+++ b/package/libid3tag/patches/patch-parse_c
@@ -0,0 +1,12 @@
+--- libid3tag-0.15.1b.orig/parse.c 2004-01-23 10:41:32.000000000 +0100
++++ libid3tag-0.15.1b/parse.c 2013-10-16 12:34:31.000000000 +0200
+@@ -165,6 +165,9 @@ id3_ucs4_t *id3_parse_string(id3_byte_t
+ case ID3_FIELD_TEXTENCODING_UTF_8:
+ ucs4 = id3_utf8_deserialize(ptr, length);
+ break;
++ default:
++ /* FIXME: Unknown encoding! Print warning? */
++ return NULL;
+ }
+
+ if (ucs4 && !full) {
diff --git a/package/libid3tag/patches/patch-utf16_c b/package/libid3tag/patches/patch-utf16_c
new file mode 100644
index 000000000..1466ebdf7
--- /dev/null
+++ b/package/libid3tag/patches/patch-utf16_c
@@ -0,0 +1,21 @@
+--- libid3tag-0.15.1b.orig/utf16.c 2004-01-23 10:41:32.000000000 +0100
++++ libid3tag-0.15.1b/utf16.c 2013-10-16 12:34:27.000000000 +0200
+@@ -282,5 +282,18 @@ id3_ucs4_t *id3_utf16_deserialize(id3_by
+
+ 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;
+ }