aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2022-06-14 23:37:05 +0200
committerDan Engelbrecht <[email protected]>2022-06-15 00:03:40 +0200
commit0ba3a7d1c67de9b6d94f835f6e90a1f2e115f94c (patch)
tree67297329596bb3fca10a879a0dddfac9c9d8a7af
parentreview feedback (diff)
downloadzen-0ba3a7d1c67de9b6d94f835f6e90a1f2e115f94c.tar.xz
zen-0ba3a7d1c67de9b6d94f835f6e90a1f2e115f94c.zip
Make sure we don't try to create a ZipFS IoBuffer of zero size
-rw-r--r--zencore/iobuffer.cpp2
-rw-r--r--zenserver/frontend/frontend.cpp8
2 files changed, 9 insertions, 1 deletions
diff --git a/zencore/iobuffer.cpp b/zencore/iobuffer.cpp
index 56b05d86d..37ef57c2d 100644
--- a/zencore/iobuffer.cpp
+++ b/zencore/iobuffer.cpp
@@ -274,6 +274,8 @@ IoBufferExtendedCore::Materialize() const
const uint64_t MappedOffsetDisplacement = m_FileOffset - MapOffset;
const uint64_t MapSize = m_DataBytes + MappedOffsetDisplacement;
+ ZEN_ASSERT(MapSize > 0);
+
#if ZEN_PLATFORM_WINDOWS
NewMmapHandle = CreateFileMapping(m_FileHandle,
/* lpFileMappingAttributes */ nullptr,
diff --git a/zenserver/frontend/frontend.cpp b/zenserver/frontend/frontend.cpp
index 842587708..e203e0631 100644
--- a/zenserver/frontend/frontend.cpp
+++ b/zenserver/frontend/frontend.cpp
@@ -26,7 +26,7 @@ FindZipFsInBinary(const IoBuffer& BinBuffer)
uintptr_t Cursor = uintptr_t(BinBuffer.GetData());
size_t BinSize = 0;
- uint32_t Magic = *(uint32_t*)(BinBuffer.GetData());
+ uint32_t Magic = *(uint32_t*)(Cursor);
#if ZEN_PLATFORM_LINUX
if (Magic == 0x464c457f)
{
@@ -134,6 +134,12 @@ FindZipFsInBinary(const IoBuffer& BinBuffer)
return {};
}
+ size_t ZipFsSize = BinBuffer.Size() - BinSize;
+ if (!ZipFsSize)
+ {
+ return {};
+ }
+
return IoBuffer(BinBuffer, BinSize);
}