Compare commits
11 Commits
release-1.
...
master
Author | SHA1 | Date | |
---|---|---|---|
![]() |
6d8e423ef0 | ||
![]() |
2619e001cb | ||
![]() |
76212be904 | ||
![]() |
0a2d3e3644 | ||
![]() |
4934049696 | ||
![]() |
db5d627b5b | ||
![]() |
e97e1a3897 | ||
![]() |
bab4d91a78 | ||
![]() |
9466bf5f2b | ||
![]() |
81edf95a02 | ||
![]() |
b3de2dd981 |
31
ChangeLog
31
ChangeLog
@ -1,3 +1,34 @@
|
|||||||
|
2015-11-21 Moritz Bunkus <moritz@bunkus.org>
|
||||||
|
|
||||||
|
* KaxVersion.cpp: in order to enable deterministic builds the
|
||||||
|
KaxCodeDate variable has been set to "Unknown" instead of the date
|
||||||
|
and time of compilation. Patch by Ed Schouten <ed@nuxi.nl>.
|
||||||
|
|
||||||
|
2015-10-20 Moritz Bunkus <moritz@bunkus.org>
|
||||||
|
|
||||||
|
* Released v1.4.4.
|
||||||
|
|
||||||
|
* KaxInternalBlock::ReadData(): Fixed an invalid memory
|
||||||
|
access. When reading a block group or a simple block that uses
|
||||||
|
EBML lacing the frame sizes indicated in the lacing weren't
|
||||||
|
checked against the available number of bytes. If the indicated
|
||||||
|
frame size was bigger than the whole block's size the parser would
|
||||||
|
read beyond the end of the buffer resulting in a heap information
|
||||||
|
leak.
|
||||||
|
|
||||||
|
2015-10-17 Moritz Bunkus <moritz@bunkus.org>
|
||||||
|
|
||||||
|
* Released v1.4.3.
|
||||||
|
|
||||||
|
2015-05-02 Daniel Winzen <d@winzen4.de>
|
||||||
|
|
||||||
|
* all: a couple of optimizations in the main library and a memory
|
||||||
|
leak fix in the tests
|
||||||
|
|
||||||
|
2015-02-01 Jan Engelhardt <jengelh@inai.de>
|
||||||
|
|
||||||
|
* build system: fix linking against libEBML
|
||||||
|
|
||||||
2015-01-04 Moritz Bunkus <moritz@bunkus.org>
|
2015-01-04 Moritz Bunkus <moritz@bunkus.org>
|
||||||
|
|
||||||
* Released v1.4.2.
|
* Released v1.4.2.
|
||||||
|
@ -27,6 +27,7 @@ libmatroska_la_SOURCES = \
|
|||||||
src/KaxTracks.cpp \
|
src/KaxTracks.cpp \
|
||||||
src/KaxVersion.cpp
|
src/KaxVersion.cpp
|
||||||
libmatroska_la_LDFLAGS = -version-info 6:0:0 -no-undefined
|
libmatroska_la_LDFLAGS = -version-info 6:0:0 -no-undefined
|
||||||
|
libmatroska_la_LIBADD = $(EBML_LIBS)
|
||||||
|
|
||||||
nobase_include_HEADERS = \
|
nobase_include_HEADERS = \
|
||||||
matroska/c/libmatroska.h \
|
matroska/c/libmatroska.h \
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
AC_INIT([libmatroska], [1.4.2])
|
AC_INIT([libmatroska], [1.4.4])
|
||||||
AC_CONFIG_AUX_DIR([build-aux])
|
AC_CONFIG_AUX_DIR([build-aux])
|
||||||
AC_CONFIG_HEADERS([config.h])
|
AC_CONFIG_HEADERS([config.h])
|
||||||
AC_CONFIG_MACRO_DIR([m4])
|
AC_CONFIG_MACRO_DIR([m4])
|
||||||
@ -9,6 +9,6 @@ AC_ARG_ENABLE([debug],
|
|||||||
AS_HELP_STRING([--enable-debug], [Add -g -DDEBUG to compile flags]),
|
AS_HELP_STRING([--enable-debug], [Add -g -DDEBUG to compile flags]),
|
||||||
[enable_debug="$withval"], [enable_debug=no])
|
[enable_debug="$withval"], [enable_debug=no])
|
||||||
AM_CONDITIONAL([ENABLE_DEBUG], [test "$enable_debug" = yes])
|
AM_CONDITIONAL([ENABLE_DEBUG], [test "$enable_debug" = yes])
|
||||||
PKG_CHECK_MODULES([EBML],[libebml >= 1.3.1])
|
PKG_CHECK_MODULES([EBML],[libebml >= 1.3.3])
|
||||||
AC_CONFIG_FILES([Makefile libmatroska.pc])
|
AC_CONFIG_FILES([Makefile libmatroska.pc])
|
||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
|
|
||||||
START_LIBMATROSKA_NAMESPACE
|
START_LIBMATROSKA_NAMESPACE
|
||||||
|
|
||||||
#define LIBMATROSKA_VERSION 0x010402
|
#define LIBMATROSKA_VERSION 0x010404
|
||||||
|
|
||||||
extern const std::string KaxCodeVersion;
|
extern const std::string KaxCodeVersion;
|
||||||
extern const std::string KaxCodeDate;
|
extern const std::string KaxCodeDate;
|
||||||
|
@ -280,7 +280,7 @@ inline bool FileMatroska::IsMyTrack(const Track * aTrack) const
|
|||||||
if (aTrack == 0)
|
if (aTrack == 0)
|
||||||
throw 0;
|
throw 0;
|
||||||
|
|
||||||
for (std::vector<Track*>::const_iterator i = myTracks.begin(); i != myTracks.end(); i ++) {
|
for (std::vector<Track*>::const_iterator i = myTracks.begin(); i != myTracks.end(); ++i) {
|
||||||
if (*i == aTrack)
|
if (*i == aTrack)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -296,7 +296,7 @@ void FileMatroska::SelectReadingTrack(Track * aTrack, bool select)
|
|||||||
if (IsMyTrack(aTrack)) {
|
if (IsMyTrack(aTrack)) {
|
||||||
// here we have the right track
|
// here we have the right track
|
||||||
// check if it's not already selected
|
// check if it's not already selected
|
||||||
for (std::vector<uint8>::iterator j = mySelectedTracks.begin(); j != mySelectedTracks.end(); j ++) {
|
for (std::vector<uint8>::iterator j = mySelectedTracks.begin(); j != mySelectedTracks.end(); ++j) {
|
||||||
if (*j == aTrack->TrackNumber())
|
if (*j == aTrack->TrackNumber())
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -314,7 +314,7 @@ inline bool FileMatroska::IsReadingTrack(const uint8 aTrackNumber) const
|
|||||||
{
|
{
|
||||||
for (std::vector<uint8>::const_iterator trackIdx = mySelectedTracks.begin();
|
for (std::vector<uint8>::const_iterator trackIdx = mySelectedTracks.begin();
|
||||||
trackIdx != mySelectedTracks.end() && *trackIdx < aTrackNumber;
|
trackIdx != mySelectedTracks.end() && *trackIdx < aTrackNumber;
|
||||||
trackIdx++) {}
|
++trackIdx) {}
|
||||||
|
|
||||||
if (trackIdx == mySelectedTracks.end())
|
if (trackIdx == mySelectedTracks.end())
|
||||||
return false;
|
return false;
|
||||||
|
@ -89,7 +89,7 @@ KaxInternalBlock::KaxInternalBlock(const KaxInternalBlock & ElementToClone)
|
|||||||
std::vector<DataBuffer *>::iterator myItr = myBuffers.begin();
|
std::vector<DataBuffer *>::iterator myItr = myBuffers.begin();
|
||||||
while (Itr != ElementToClone.myBuffers.end()) {
|
while (Itr != ElementToClone.myBuffers.end()) {
|
||||||
*myItr = (*Itr)->Clone();
|
*myItr = (*Itr)->Clone();
|
||||||
Itr++; myItr++;
|
++Itr; ++myItr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -529,6 +529,8 @@ filepos_t KaxInternalBlock::ReadData(IOCallback & input, ScopeMode ReadFully)
|
|||||||
case LACING_EBML:
|
case LACING_EBML:
|
||||||
SizeRead = LastBufferSize;
|
SizeRead = LastBufferSize;
|
||||||
FrameSize = ReadCodedSizeValue(BufferStart + Mem.GetPosition(), SizeRead, SizeUnknown);
|
FrameSize = ReadCodedSizeValue(BufferStart + Mem.GetPosition(), SizeRead, SizeUnknown);
|
||||||
|
if (!FrameSize || (static_cast<uint32>(FrameSize + SizeRead) > LastBufferSize))
|
||||||
|
throw SafeReadIOCallback::EndOfStreamX(SizeRead);
|
||||||
SizeList[0] = FrameSize;
|
SizeList[0] = FrameSize;
|
||||||
Mem.Skip(SizeRead);
|
Mem.Skip(SizeRead);
|
||||||
LastBufferSize -= FrameSize + SizeRead;
|
LastBufferSize -= FrameSize + SizeRead;
|
||||||
@ -537,6 +539,8 @@ filepos_t KaxInternalBlock::ReadData(IOCallback & input, ScopeMode ReadFully)
|
|||||||
// get the size of the frame
|
// get the size of the frame
|
||||||
SizeRead = LastBufferSize;
|
SizeRead = LastBufferSize;
|
||||||
FrameSize += ReadCodedSizeSignedValue(BufferStart + Mem.GetPosition(), SizeRead, SizeUnknown);
|
FrameSize += ReadCodedSizeSignedValue(BufferStart + Mem.GetPosition(), SizeRead, SizeUnknown);
|
||||||
|
if (!FrameSize || (static_cast<uint32>(FrameSize + SizeRead) > LastBufferSize))
|
||||||
|
throw SafeReadIOCallback::EndOfStreamX(SizeRead);
|
||||||
SizeList[Index] = FrameSize;
|
SizeList[Index] = FrameSize;
|
||||||
Mem.Skip(SizeRead);
|
Mem.Skip(SizeRead);
|
||||||
LastBufferSize -= FrameSize + SizeRead;
|
LastBufferSize -= FrameSize + SizeRead;
|
||||||
|
@ -37,7 +37,11 @@
|
|||||||
|
|
||||||
START_LIBMATROSKA_NAMESPACE
|
START_LIBMATROSKA_NAMESPACE
|
||||||
|
|
||||||
const std::string KaxCodeVersion = "1.4.2";
|
const std::string KaxCodeVersion = "1.4.4";
|
||||||
const std::string KaxCodeDate = __TIMESTAMP__;
|
|
||||||
|
// Up to version 1.4.4 this library exported a build date string. As
|
||||||
|
// this made the build non-reproducible, replace it by a placeholder to
|
||||||
|
// remain binary compatible.
|
||||||
|
const std::string KaxCodeDate = "Unknown";
|
||||||
|
|
||||||
END_LIBMATROSKA_NAMESPACE
|
END_LIBMATROSKA_NAMESPACE
|
||||||
|
@ -822,6 +822,7 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
else cout << "received a frame from an unwanted track" << endl;
|
else cout << "received a frame from an unwanted track" << endl;
|
||||||
}
|
}
|
||||||
|
delete[] Tracks;
|
||||||
#endif // OLD
|
#endif // OLD
|
||||||
}
|
}
|
||||||
catch (exception & Ex)
|
catch (exception & Ex)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user