aboutsummaryrefslogtreecommitdiff
path: root/src/zencore/compactbinaryvalidation.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2024-05-21 15:05:40 +0200
committerGitHub Enterprise <[email protected]>2024-05-21 15:05:40 +0200
commitad464941474173a9ba8d860c88db4689611d50a6 (patch)
tree0ad55427fa3b3b70551c5b0c860a77aa0ba29639 /src/zencore/compactbinaryvalidation.cpp
parentrefactor BlockStore IterateChunks (#77) (diff)
downloadzen-ad464941474173a9ba8d860c88db4689611d50a6.tar.xz
zen-ad464941474173a9ba8d860c88db4689611d50a6.zip
iobuffer memstomp fix (#85)
* Don't try to validate empty compact binary * Don't try to free fake memory buffer pointer in iobuffer destructor
Diffstat (limited to 'src/zencore/compactbinaryvalidation.cpp')
-rw-r--r--src/zencore/compactbinaryvalidation.cpp13
1 files changed, 10 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;