From b19c800f3408e561935deb4c93c40def083d4a9a Mon Sep 17 00:00:00 2001 From: Thulinma Date: Fri, 11 May 2012 18:39:24 +0200 Subject: [PATCH] Fix FLV2DTSC binary and add some checks in the flv_tag lib. --- lib/flv_tag.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/flv_tag.cpp b/lib/flv_tag.cpp index 65f58b10..6a70cc06 100644 --- a/lib/flv_tag.cpp +++ b/lib/flv_tag.cpp @@ -866,8 +866,10 @@ DTSC::DTMI FLV::Tag::toDTSC(DTSC::DTMI & metadata){ } } if ((audiodata & 0xF0) == 0xA0){ + if (len < 18){return DTSC::DTMI();} pack_out.addContent(DTSC::DTMI("data", std::string((char*)data+13, (size_t)len-17))); }else{ + if (len < 17){return DTSC::DTMI();} pack_out.addContent(DTSC::DTMI("data", std::string((char*)data+12, (size_t)len-16))); } return pack_out; @@ -876,8 +878,10 @@ DTSC::DTMI FLV::Tag::toDTSC(DTSC::DTMI & metadata){ char videodata = data[11]; if (needsInitData() && isInitData()){ if ((videodata & 0x0F) == 7){ + if (len < 21){return DTSC::DTMI();} Meta_Put(metadata, "video", "init", std::string((char*)data+16, (size_t)len-20)); }else{ + if (len < 17){return DTSC::DTMI();} Meta_Put(metadata, "video", "init", std::string((char*)data+12, (size_t)len-16)); } return pack_out;//skip rest of parsing, get next tag. @@ -908,8 +912,10 @@ DTSC::DTMI FLV::Tag::toDTSC(DTSC::DTMI & metadata){ int offset = (data[13] << 16) + (data[14] << 8) + data[15]; offset = (offset << 8) >> 8; pack_out.addContent(DTSC::DTMI("offset", offset)); + if (len < 21){return DTSC::DTMI();} pack_out.addContent(DTSC::DTMI("data", std::string((char*)data+16, (size_t)len-20))); }else{ + if (len < 17){return DTSC::DTMI();} pack_out.addContent(DTSC::DTMI("data", std::string((char*)data+12, (size_t)len-16))); } return pack_out;