mirror of
https://github.com/claunia/flac.git
synced 2025-12-16 18:54:26 +00:00
libFLAC: Improve fix in bc5113007a
The assert that was removed in bc5113007a, was a result of error
handling in read_metadata_vorbiscomment_() which set obj->num_comments
to zero, without freeing obj->comments and setting it to NULL.
This commit also restores the assert that was removed.
This commit is contained in:
@@ -567,6 +567,7 @@ FLAC_API FLAC__StreamMetadata *FLAC__metadata_object_clone(const FLAC__StreamMet
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if(object->data.vorbis_comment.num_comments == 0) {
|
if(object->data.vorbis_comment.num_comments == 0) {
|
||||||
|
FLAC__ASSERT(0 == object->data.vorbis_comment.comments);
|
||||||
to->data.vorbis_comment.comments = 0;
|
to->data.vorbis_comment.comments = 0;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
@@ -1776,13 +1776,15 @@ FLAC__bool read_metadata_vorbiscomment_(FLAC__StreamDecoder *decoder, FLAC__Stre
|
|||||||
obj->comments[i].entry = 0;
|
obj->comments[i].entry = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
obj->comments = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
skip:
|
skip:
|
||||||
if (length > 0) {
|
if (length > 0) {
|
||||||
/* This will only happen on files with invalid data in comments */
|
/* length > 0 can only happen on files with invalid data in comments */
|
||||||
|
if(obj->num_comments < 1) {
|
||||||
|
free(obj->comments);
|
||||||
|
obj->comments = NULL;
|
||||||
|
}
|
||||||
if(!FLAC__bitreader_skip_byte_block_aligned_no_crc(decoder->private_->input, length))
|
if(!FLAC__bitreader_skip_byte_block_aligned_no_crc(decoder->private_->input, length))
|
||||||
return false; /* read_callback_ sets the state for us */
|
return false; /* read_callback_ sets the state for us */
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user