diff options
author | Max Kellermann <max@duempel.org> | 2008-03-26 10:37:40 +0000 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2008-03-26 10:37:40 +0000 |
commit | c9e6201df51dd6063fbdbdacb47cc4b9060597fd (patch) | |
tree | f4cb552c77007685086c346018591d47bfa9bcd8 /src/playlist.c | |
parent | c5b524e3762723a200156b79efd58192db320e5b (diff) | |
download | mpd-c9e6201df51dd6063fbdbdacb47cc4b9060597fd.tar.gz mpd-c9e6201df51dd6063fbdbdacb47cc4b9060597fd.tar.xz mpd-c9e6201df51dd6063fbdbdacb47cc4b9060597fd.zip |
fix strtok() related segmentation fault
strtok() may return NULL if the input is an empty string. The
playlist parser did not check for that.
git-svn-id: https://svn.musicpd.org/mpd/trunk@7200 09075e82-0dd4-0310-85a5-a0d7c8717e4f
Diffstat (limited to 'src/playlist.c')
-rw-r--r-- | src/playlist.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/playlist.c b/src/playlist.c index 60ad75627..1196db703 100644 --- a/src/playlist.c +++ b/src/playlist.c @@ -272,7 +272,10 @@ static void loadPlaylistFromStateFile(FILE *fp, char *buffer, if (!myFgets(buffer, PLAYLIST_BUFFER_SIZE, fp)) state_file_fatal(); while (strcmp(buffer, PLAYLIST_STATE_FILE_PLAYLIST_END)) { - song = atoi(strtok(buffer, ":")); + temp = strtok(buffer, ":"); + if (temp == NULL) + state_file_fatal(); + song = atoi(temp); if (!(temp = strtok(NULL, ""))) state_file_fatal(); if (!addToPlaylist(STDERR_FILENO, temp, NULL) |