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
This commit is contained in:
parent
e5df85db15
commit
c2e1ccd968
10
src/tag.c
10
src/tag.c
@ -27,6 +27,7 @@
|
|||||||
#include "charConv.h"
|
#include "charConv.h"
|
||||||
#include "tagTracker.h"
|
#include "tagTracker.h"
|
||||||
#include "mpd_types.h"
|
#include "mpd_types.h"
|
||||||
|
#include "gcc.h"
|
||||||
|
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <stdlib.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");
|
setCharSetConversion("ISO-8859-1", "UTF-8");
|
||||||
isostr = convStrDup((char *)utf8);
|
isostr = convStrDup((char *)utf8);
|
||||||
free(utf8);
|
free(utf8);
|
||||||
|
if (mpd_unlikely(!isostr))
|
||||||
|
continue;
|
||||||
setCharSetConversion("UTF-8", encoding);
|
setCharSetConversion("UTF-8", encoding);
|
||||||
utf8 = (id3_utf8_t *)convStrDup(isostr);
|
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);
|
free(isostr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user