X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2FMXF.cpp;h=b49fb83b5cfd1e4f18456dcf27279cb63091935f;hb=60f007fef43008c71ea24f2f754eb4d3856e8130;hp=df8bb2846cd5bf9c21250b7383129c51f3db7d9b;hpb=e65db682915797bb2adc57d23b0de04cb3861138;p=asdcplib.git diff --git a/src/MXF.cpp b/src/MXF.cpp index df8bb28..b49fb83 100755 --- a/src/MXF.cpp +++ b/src/MXF.cpp @@ -128,7 +128,7 @@ ASDCP::MXF::RIP::InitFromFile(const Kumu::FileReader& Reader) if (m_ValueLength < 4) { DefaultLogSink().Error("RIP is too short.\n"); - return RESULT_FAIL; + return RESULT_KLV_CODING(__LINE__, __FILE__); } Kumu::MemIOReader MemRDR(m_ValueStart, m_ValueLength - 4); result = PairArray.Unarchive(&MemRDR) ? RESULT_OK : RESULT_KLV_CODING(__LINE__, __FILE__); @@ -456,7 +456,7 @@ ASDCP::MXF::Primer::InitFromBuffer(const byte_t* p, ui32_t l) if (m_ValueStart + m_ValueLength > p + l) { DefaultLogSink().Error("Primer entry too long.\n"); - return RESULT_FAIL; + return RESULT_KLV_CODING(__LINE__, __FILE__); } Kumu::MemIOReader MemRDR(m_ValueStart, m_ValueLength); result = LocalTagEntryBatch.Unarchive(&MemRDR) ? RESULT_OK : RESULT_KLV_CODING(__LINE__, __FILE__); @@ -1390,11 +1390,12 @@ ASDCP::MXF::InterchangeObject::InitFromBuffer(const byte_t* p, ui32_t l) if ( ASDCP_SUCCESS(result) ) { - if (m_ValueStart + m_ValueLength > p + l) - { - DefaultLogSink().Error("Interchange Object value extends past buffer length.\n"); - return RESULT_FAIL; - } + if ( ( m_ValueStart + m_ValueLength ) > ( p + l ) ) + { + DefaultLogSink().Error("Interchange Object value extends past buffer length.\n"); + return RESULT_KLV_CODING(__LINE__, __FILE__); + } + TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup); result = InitFromTLVSet(MemRDR); }