From: Stephen F. Booth Date: Sat, 30 Sep 2017 15:15:41 +0000 (-0500) Subject: Don't assume TDRC is an instance of TextIdentificationFrame (#831) X-Git-Tag: v1.12-beta-1~39 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cb9f07d9dcd791b63e622da43f7b232adaec0a9a;p=taglib Don't assume TDRC is an instance of TextIdentificationFrame (#831) If TDRC is encrypted, FrameFactory::createFrame() returns UnknownFrame which causes problems in rebuildAggregateFrames() when it is assumed that TDRC is a TextIdentificationFrame --- diff --git a/taglib/mpeg/id3v2/id3v2framefactory.cpp b/taglib/mpeg/id3v2/id3v2framefactory.cpp index 759a9b7b..9347ab86 100644 --- a/taglib/mpeg/id3v2/id3v2framefactory.cpp +++ b/taglib/mpeg/id3v2/id3v2framefactory.cpp @@ -334,10 +334,11 @@ void FrameFactory::rebuildAggregateFrames(ID3v2::Tag *tag) const tag->frameList("TDAT").size() == 1) { TextIdentificationFrame *tdrc = - static_cast(tag->frameList("TDRC").front()); + dynamic_cast(tag->frameList("TDRC").front()); UnknownFrame *tdat = static_cast(tag->frameList("TDAT").front()); - if(tdrc->fieldList().size() == 1 && + if(tdrc && + tdrc->fieldList().size() == 1 && tdrc->fieldList().front().size() == 4 && tdat->data().size() >= 5) {