1From eb9ded1206f18f2c319157337edea2533a40bea6 Mon Sep 17 00:00:00 2001 2From: "Stephen F. Booth" <me@sbooth.org> 3Date: Sun, 23 Jul 2017 10:11:09 -0400 4Subject: [PATCH] Don't assume TDRC is an instance of TextIdentificationFrame 5 6If TDRC is encrypted, FrameFactory::createFrame() returns UnknownFrame 7which causes problems in rebuildAggregateFrames() when it is assumed 8that TDRC is a TextIdentificationFrame 9[Retrieved from: 10https://github.com/taglib/taglib/pull/831/commits/eb9ded1206f18f2c319157337edea2533a40bea6] 11Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> 12--- 13 taglib/mpeg/id3v2/id3v2framefactory.cpp | 5 +++-- 14 1 file changed, 3 insertions(+), 2 deletions(-) 15 16diff --git a/taglib/mpeg/id3v2/id3v2framefactory.cpp b/taglib/mpeg/id3v2/id3v2framefactory.cpp 17index 759a9b7be..9347ab869 100644 18--- a/taglib/mpeg/id3v2/id3v2framefactory.cpp 19+++ b/taglib/mpeg/id3v2/id3v2framefactory.cpp 20@@ -334,10 +334,11 @@ void FrameFactory::rebuildAggregateFrames(ID3v2::Tag *tag) const 21 tag->frameList("TDAT").size() == 1) 22 { 23 TextIdentificationFrame *tdrc = 24- static_cast<TextIdentificationFrame *>(tag->frameList("TDRC").front()); 25+ dynamic_cast<TextIdentificationFrame *>(tag->frameList("TDRC").front()); 26 UnknownFrame *tdat = static_cast<UnknownFrame *>(tag->frameList("TDAT").front()); 27 28- if(tdrc->fieldList().size() == 1 && 29+ if(tdrc && 30+ tdrc->fieldList().size() == 1 && 31 tdrc->fieldList().front().size() == 4 && 32 tdat->data().size() >= 5) 33 { 34