diff options
author | Eric Wong <normalperson@yhbt.net> | 2006-08-15 00:04:34 +0000 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2006-08-15 00:04:34 +0000 |
commit | c2e1ccd968fc665742f436408089482b350853e8 (patch) | |
tree | 8758bdd6708fd43ccee1d7e7809d68d58f63a0b9 | |
parent | e5df85db158c440048af7d9f34681562cefbf7d2 (diff) | |
download | mpd-c2e1ccd968fc665742f436408089482b350853e8.tar.gz mpd-c2e1ccd968fc665742f436408089482b350853e8.tar.xz mpd-c2e1ccd968fc665742f436408089482b350853e8.zip |
tag.c: fix segfault on failed id3v1 character conversion
convStrDup() returns NULL if character conversion fails,
so make sure we check the return values and drop the
tag if we can't get a conversion.
This should close bug 1313:
http://musicpd.org/mantis/view.php?id=1313
git-svn-id: https://svn.musicpd.org/mpd/trunk@4641 09075e82-0dd4-0310-85a5-a0d7c8717e4f
-rw-r--r-- | src/tag.c | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -27,6 +27,7 @@ #include "charConv.h" #include "tagTracker.h" #include "mpd_types.h" +#include "gcc.h" #include <sys/stat.h> #include <stdlib.h> @@ -168,8 +169,17 @@ MpdTag *getID3Info(struct id3_tag *tag, char *id, int type, MpdTag * mpdTag) setCharSetConversion("ISO-8859-1", "UTF-8"); isostr = convStrDup((char *)utf8); free(utf8); + if (mpd_unlikely(!isostr)) + continue; setCharSetConversion("UTF-8", encoding); utf8 = (id3_utf8_t *)convStrDup(isostr); + if (!utf8) { + DEBUG("Unable to convert %s string to " + "UTF-8: '%s'\n", + encoding, isostr); + free(isostr); + continue; + } free(isostr); } } |