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-utf16_c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 package/libid3tag/patches/patch-utf16_c (limited to 'package/libid3tag/patches/patch-utf16_c') 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