fix segmentation fault in song info parser
The database parser does not check whether the song object has been initialized yet, which may lead to a NULL pointer dereference. Add this check. git-svn-id: https://svn.musicpd.org/mpd/trunk@7201 09075e82-0dd4-0310-85a5-a0d7c8717e4f
This commit is contained in:
parent
c9e6201df5
commit
c5e1bc39e9
|
@ -247,9 +247,11 @@ void readSongInfoIntoList(FILE * fp, SongList * list, Directory * parentDir)
|
|||
song->url = xstrdup(buffer + strlen(SONG_KEY));
|
||||
song->type = SONG_TYPE_FILE;
|
||||
song->parentDir = parentDir;
|
||||
} else if (*buffer == 0) {
|
||||
/* ignore empty lines (starting with '\0') */
|
||||
} else if (song == NULL) {
|
||||
FATAL("Problems reading song info\n");
|
||||
} else if (0 == strncmp(SONG_FILE, buffer, strlen(SONG_FILE))) {
|
||||
if (!song)
|
||||
FATAL("Problems reading song info\n");
|
||||
/* we don't need this info anymore
|
||||
song->url = xstrdup(&(buffer[strlen(SONG_FILE)]));
|
||||
*/
|
||||
|
@ -267,8 +269,7 @@ void readSongInfoIntoList(FILE * fp, SongList * list, Directory * parentDir)
|
|||
} else if (0 == strncmp(SONG_MTIME, buffer, strlen(SONG_MTIME))) {
|
||||
song->mtime = atoi(&(buffer[strlen(SONG_MTIME)]));
|
||||
}
|
||||
/* ignore empty lines (starting with '\0') */
|
||||
else if (*buffer)
|
||||
else
|
||||
FATAL("songinfo: unknown line in db: %s\n", buffer);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue