Commit 5094c8e3 authored by Steve Lhomme's avatar Steve Lhomme Committed by Hugo Beauzée-Luyssen

contrib:ebml: Do not use elements with an unknown size if it's not allowed

Signed-off-by: default avatarHugo Beauzée-Luyssen <hugo@beauzee.fr>
parent 974e719b
......@@ -11,6 +11,7 @@ $(TARBALLS)/libebml-$(EBML_VERSION).tar.xz:
ebml: libebml-$(EBML_VERSION).tar.xz .sum-ebml
$(UNPACK)
$(APPLY) $(SRC)/ebml/ebml-maxread.patch
$(APPLY) $(SRC)/ebml/unknown-check.patch
$(MOVE)
# libebml requires exceptions
......
From ff0dc3cc21494578ce731f5d7dcde5fdec23d40f Mon Sep 17 00:00:00 2001
From: Steve Lhomme <slhomme@matroska.org>
Date: Wed, 6 Dec 2017 09:32:13 +0100
Subject: [PATCH] Do not output an element with size Unknown if it's not
allowed
Similar to what is done in FindNextID().
SetSizeInfinite() doesn't actually set anything. SetSizeIsFinite() is the one
that actually sets it and it is an internal API.
---
src/EbmlElement.cpp | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
diff --git a/src/EbmlElement.cpp b/src/EbmlElement.cpp
index ae4441e..ac0be41 100644
--- a/src/EbmlElement.cpp
+++ b/src/EbmlElement.cpp
@@ -461,15 +461,13 @@ EbmlElement * EbmlElement::FindNextElement(IOCallback & DataStream, const EbmlSe
// 1 : same level
// + : further parent
if (Result->ValidateSize() && (SizeFound == SizeUnknown || UpperLevel > 0 || MaxDataSize == 0 || MaxDataSize >= (PossibleID_Length + PossibleSizeLength + SizeFound))) {
- if (SizeFound == SizeUnknown) {
- Result->SetSizeInfinite();
+ if (SizeFound != SizeUnknown || Result->SetSizeInfinite()) {
+ Result->SizePosition = DataStream.getFilePointer() - SizeIdx + EBML_ID_LENGTH(PossibleID);
+ Result->ElementPosition = Result->SizePosition - EBML_ID_LENGTH(PossibleID);
+ // place the file at the beggining of the data
+ DataStream.setFilePointer(Result->SizePosition + _SizeLength);
+ return Result;
}
-
- Result->SizePosition = DataStream.getFilePointer() - SizeIdx + EBML_ID_LENGTH(PossibleID);
- Result->ElementPosition = Result->SizePosition - EBML_ID_LENGTH(PossibleID);
- // place the file at the beggining of the data
- DataStream.setFilePointer(Result->SizePosition + _SizeLength);
- return Result;
}
}
delete Result;
--
2.10.1.windows.1
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment