Compare commits
11 Commits
Author | SHA1 | Date |
---|---|---|
|
6202225dd0 | 1 year ago |
|
3ed16b4d62 | 1 year ago |
|
40ae9cc8c7 | 4 years ago |
|
472da4f488 | 5 years ago |
|
702aebace5 | 6 years ago |
|
3794b920aa | 6 years ago |
|
4ac6f773b7 | 6 years ago |
|
48e5024718 | 6 years ago |
|
cd5ea1d86d | 6 years ago |
|
f0fa9d5e47 | 6 years ago |
|
7f096cae14 | 6 years ago |
@ -0,0 +1,31 @@
|
|||||||
|
diff -up libebml-1.3.9/src/MemIOCallback.cpp.cve-2023-52339 libebml-1.3.9/src/MemIOCallback.cpp
|
||||||
|
--- libebml-1.3.9/src/MemIOCallback.cpp.cve-2023-52339 2024-02-02 13:48:28.626522658 +0100
|
||||||
|
+++ libebml-1.3.9/src/MemIOCallback.cpp 2024-02-02 13:49:59.620078963 +0100
|
||||||
|
@@ -68,7 +68,8 @@ uint32 MemIOCallback::read(void *Buffer,
|
||||||
|
if (Buffer == NULL || Size < 1)
|
||||||
|
return 0;
|
||||||
|
//If the size is larger than than the amount left in the buffer
|
||||||
|
- if (Size + dataBufferPos > dataBufferTotalSize) {
|
||||||
|
+ if (Size + dataBufferPos < Size || // overflow, reading too much
|
||||||
|
+ Size + dataBufferPos > dataBufferTotalSize) {
|
||||||
|
//We will only return the remaining data
|
||||||
|
memcpy(Buffer, dataBuffer + dataBufferPos, dataBufferTotalSize - dataBufferPos);
|
||||||
|
uint64 oldDataPos = dataBufferPos;
|
||||||
|
@@ -95,6 +96,8 @@ void MemIOCallback::setFilePointer(int64
|
||||||
|
|
||||||
|
size_t MemIOCallback::write(const void *Buffer, size_t Size)
|
||||||
|
{
|
||||||
|
+ if (dataBufferPos + Size < Size) // overflow, we can't hold that much
|
||||||
|
+ return 0;
|
||||||
|
if (dataBufferMemorySize < dataBufferPos + Size) {
|
||||||
|
//We need more memory!
|
||||||
|
dataBuffer = (binary *)realloc((void *)dataBuffer, dataBufferPos + Size);
|
||||||
|
@@ -109,6 +112,8 @@ size_t MemIOCallback::write(const void *
|
||||||
|
|
||||||
|
uint32 MemIOCallback::write(IOCallback & IOToRead, size_t Size)
|
||||||
|
{
|
||||||
|
+ if (dataBufferPos + Size < Size) // overflow, we can't hold that much
|
||||||
|
+ return 0;
|
||||||
|
if (dataBufferMemorySize < dataBufferPos + Size) {
|
||||||
|
//We need more memory!
|
||||||
|
dataBuffer = (binary *)realloc((void *)dataBuffer, dataBufferPos + Size);
|
Loading…
Reference in new issue