aboutsummaryrefslogtreecommitdiff
path: root/src/zencore
diff options
context:
space:
mode:
Diffstat (limited to 'src/zencore')
-rw-r--r--src/zencore/compactbinaryvalidation.cpp13
-rw-r--r--src/zencore/iobuffer.cpp4
2 files changed, 14 insertions, 3 deletions
diff --git a/src/zencore/compactbinaryvalidation.cpp b/src/zencore/compactbinaryvalidation.cpp
index 462978f63..db830d250 100644
--- a/src/zencore/compactbinaryvalidation.cpp
+++ b/src/zencore/compactbinaryvalidation.cpp
@@ -544,10 +544,17 @@ ValidateCompactBinary(MemoryView View, CbValidateMode Mode, CbFieldType Type)
CbValidateError Error = CbValidateError::None;
if (EnumHasAnyFlags(Mode, CbValidateMode::All))
{
- ValidateCbField(View, Mode, Error, Type);
- if (!View.IsEmpty() && EnumHasAnyFlags(Mode, CbValidateMode::Padding))
+ if (View.IsEmpty())
{
- AddError(Error, CbValidateError::Padding);
+ AddError(Error, CbValidateError::OutOfBounds);
+ }
+ else
+ {
+ ValidateCbField(View, Mode, Error, Type);
+ if (!View.IsEmpty() && EnumHasAnyFlags(Mode, CbValidateMode::Padding))
+ {
+ AddError(Error, CbValidateError::Padding);
+ }
}
}
return Error;
diff --git a/src/zencore/iobuffer.cpp b/src/zencore/iobuffer.cpp
index e1e8750a1..fd99a01cb 100644
--- a/src/zencore/iobuffer.cpp
+++ b/src/zencore/iobuffer.cpp
@@ -212,6 +212,10 @@ IoBufferExtendedCore::~IoBufferExtendedCore()
m_DataPtr = nullptr; // prevent any buffer deallocation attempts
}
+ else if (m_DataPtr == reinterpret_cast<uint8_t*>(&m_MmapHandle))
+ {
+ m_DataPtr = nullptr;
+ }
const uint32_t LocalFlags = m_Flags.load(std::memory_order_relaxed);
#if ZEN_PLATFORM_WINDOWS