From d7ca2a0cd4975f94a1d17c60e8c0bdc56840ac69 Mon Sep 17 00:00:00 2001 From: Martchus Date: Sat, 19 Nov 2016 14:33:06 +0100 Subject: [PATCH] Warn about empty METADATA_BLOCK_PICTURE --- flac/flacmetadata.cpp | 10 +++++++--- flac/flacstream.cpp | 16 ++++++++++------ 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/flac/flacmetadata.cpp b/flac/flacmetadata.cpp index 2c1ee05..3a73401 100644 --- a/flac/flacmetadata.cpp +++ b/flac/flacmetadata.cpp @@ -96,9 +96,13 @@ void FlacMetaDataBlockPicture::parse(istream &inputStream, uint32 maxSize) inputStream.seekg(4 * 4, ios_base::cur); size = reader.readUInt32BE(); CHECK_MAX_SIZE(size); - auto data = make_unique(size); - inputStream.read(data.get(), size); - m_value.assignData(move(data), size, TagDataType::Picture); + if(size) { + auto data = make_unique(size); + inputStream.read(data.get(), size); + m_value.assignData(move(data), size, TagDataType::Picture); + } else { + m_value.clearData(); + } } /*! diff --git a/flac/flacstream.cpp b/flac/flacstream.cpp index 7e1ebe7..ccb00da 100644 --- a/flac/flacstream.cpp +++ b/flac/flacstream.cpp @@ -127,13 +127,17 @@ void FlacStream::internalParseHeader() picture.parse(*m_istream, header.dataSize()); coverField.setTypeInfo(picture.pictureType()); - // add the cover to the Vorbis comment - if(!m_vorbisComment) { - // create one if none exists yet - m_vorbisComment = make_unique(); - m_vorbisComment->setVendor(TagValue(APP_NAME " v" APP_VERSION, TagTextEncoding::Utf8)); + if(coverField.value().isEmpty()) { + addNotification(NotificationType::Warning, "\"METADATA_BLOCK_PICTURE\" contains no picture.", context); + } else { + // add the cover to the Vorbis comment + if(!m_vorbisComment) { + // create one if none exists yet + m_vorbisComment = make_unique(); + m_vorbisComment->setVendor(TagValue(APP_NAME " v" APP_VERSION, TagTextEncoding::Utf8)); + } + m_vorbisComment->fields().insert(make_pair(coverField.id(), move(coverField))); } - m_vorbisComment->fields().insert(make_pair(coverField.id(), move(coverField))); } catch(const TruncatedDataException &) { addNotification(NotificationType::Critical, "\"METADATA_BLOCK_PICTURE\" is truncated and will be ignored.", context);