diff options
| author | Dan Engelbrecht <[email protected]> | 2024-05-21 15:05:40 +0200 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2024-05-21 15:05:40 +0200 |
| commit | ad464941474173a9ba8d860c88db4689611d50a6 (patch) | |
| tree | 0ad55427fa3b3b70551c5b0c860a77aa0ba29639 /src/zencore/compactbinaryvalidation.cpp | |
| parent | refactor BlockStore IterateChunks (#77) (diff) | |
| download | zen-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.cpp | 13 |
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; |