From 232f2bdaac85236e2a89fde387359dc8d12c6ff0 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Wed, 16 Oct 2013 12:55:52 +0200 Subject: =?UTF-8?q?finally=20found=20the=20problem=20for=20oom=20killer=20?= =?UTF-8?q?with=20mpd,=20add=20Debian=20patches=20which=20fixes=20it,=20ev?= =?UTF-8?q?il=20=C2=B5=20in=20ID3=20tag?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package/libid3tag/patches/patch-compat_gperf | 13 +++++++++++++ package/libid3tag/patches/patch-genre_dat | 22 ++++++++++++++++++++++ package/libid3tag/patches/patch-genre_dat_in | 11 +++++++++++ package/libid3tag/patches/patch-parse_c | 12 ++++++++++++ package/libid3tag/patches/patch-utf16_c | 21 +++++++++++++++++++++ 5 files changed, 79 insertions(+) create mode 100644 package/libid3tag/patches/patch-compat_gperf create mode 100644 package/libid3tag/patches/patch-genre_dat create mode 100644 package/libid3tag/patches/patch-genre_dat_in create mode 100644 package/libid3tag/patches/patch-parse_c create mode 100644 package/libid3tag/patches/patch-utf16_c (limited to 'package/libid3tag/patches') 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; + } -- cgit v1.2.3