playlist_song: fix user-after-free bug
This commit is contained in:
		
							
								
								
									
										1
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								NEWS
									
									
									
									
									
								
							| @@ -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) | ||||||
|   | |||||||
| @@ -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; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Max Kellermann
					Max Kellermann