Fix FLV2DTSC binary and add some checks in the flv_tag lib.
This commit is contained in:
parent
995a20b91e
commit
b19c800f34
1 changed files with 6 additions and 0 deletions
|
@ -866,8 +866,10 @@ DTSC::DTMI FLV::Tag::toDTSC(DTSC::DTMI & metadata){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((audiodata & 0xF0) == 0xA0){
|
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)));
|
pack_out.addContent(DTSC::DTMI("data", std::string((char*)data+13, (size_t)len-17)));
|
||||||
}else{
|
}else{
|
||||||
|
if (len < 17){return DTSC::DTMI();}
|
||||||
pack_out.addContent(DTSC::DTMI("data", std::string((char*)data+12, (size_t)len-16)));
|
pack_out.addContent(DTSC::DTMI("data", std::string((char*)data+12, (size_t)len-16)));
|
||||||
}
|
}
|
||||||
return pack_out;
|
return pack_out;
|
||||||
|
@ -876,8 +878,10 @@ DTSC::DTMI FLV::Tag::toDTSC(DTSC::DTMI & metadata){
|
||||||
char videodata = data[11];
|
char videodata = data[11];
|
||||||
if (needsInitData() && isInitData()){
|
if (needsInitData() && isInitData()){
|
||||||
if ((videodata & 0x0F) == 7){
|
if ((videodata & 0x0F) == 7){
|
||||||
|
if (len < 21){return DTSC::DTMI();}
|
||||||
Meta_Put(metadata, "video", "init", std::string((char*)data+16, (size_t)len-20));
|
Meta_Put(metadata, "video", "init", std::string((char*)data+16, (size_t)len-20));
|
||||||
}else{
|
}else{
|
||||||
|
if (len < 17){return DTSC::DTMI();}
|
||||||
Meta_Put(metadata, "video", "init", std::string((char*)data+12, (size_t)len-16));
|
Meta_Put(metadata, "video", "init", std::string((char*)data+12, (size_t)len-16));
|
||||||
}
|
}
|
||||||
return pack_out;//skip rest of parsing, get next tag.
|
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];
|
int offset = (data[13] << 16) + (data[14] << 8) + data[15];
|
||||||
offset = (offset << 8) >> 8;
|
offset = (offset << 8) >> 8;
|
||||||
pack_out.addContent(DTSC::DTMI("offset", offset));
|
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)));
|
pack_out.addContent(DTSC::DTMI("data", std::string((char*)data+16, (size_t)len-20)));
|
||||||
}else{
|
}else{
|
||||||
|
if (len < 17){return DTSC::DTMI();}
|
||||||
pack_out.addContent(DTSC::DTMI("data", std::string((char*)data+12, (size_t)len-16)));
|
pack_out.addContent(DTSC::DTMI("data", std::string((char*)data+12, (size_t)len-16)));
|
||||||
}
|
}
|
||||||
return pack_out;
|
return pack_out;
|
||||||
|
|
Loading…
Add table
Reference in a new issue