playlist_song: fix user-after-free bug

This commit is contained in:
Max Kellermann 2012-08-15 23:57:38 +02:00
parent 9374e0f445
commit 20695ef369
2 changed files with 4 additions and 1 deletions

1
NEWS
View File

@ -11,6 +11,7 @@ ver 0.17.2 (2012/??/??)
- httpd: fix throttling bug after resuming playback - httpd: fix throttling bug after resuming playback
* mapper: fix non-UTF8 music directory name * mapper: fix non-UTF8 music directory name
* mapper: fix potential crash in file permission check * mapper: fix potential crash in file permission check
* playlist: fix use-after-free bug
ver 0.17.1 (2012/07/31) ver 0.17.1 (2012/07/31)

View File

@ -69,7 +69,6 @@ apply_song_metadata(struct song *dest, const struct song *src)
} else { } else {
tmp = song_file_new(dest->uri, NULL); tmp = song_file_new(dest->uri, NULL);
merge_song_metadata(tmp, dest, src); merge_song_metadata(tmp, dest, src);
song_free(dest);
} }
if (dest->tag != NULL && dest->tag->time > 0 && if (dest->tag != NULL && dest->tag->time > 0 &&
@ -80,6 +79,9 @@ apply_song_metadata(struct song *dest, const struct song *src)
(e.g. last track on a CUE file); fix it up here */ (e.g. last track on a CUE file); fix it up here */
tmp->tag->time = dest->tag->time - src->start_ms / 1000; tmp->tag->time = dest->tag->time - src->start_ms / 1000;
if (!song_in_database(dest))
song_free(dest);
return tmp; return tmp;
} }