From ad464941474173a9ba8d860c88db4689611d50a6 Mon Sep 17 00:00:00 2001 From: Dan Engelbrecht Date: Tue, 21 May 2024 15:05:40 +0200 Subject: iobuffer memstomp fix (#85) * Don't try to validate empty compact binary * Don't try to free fake memory buffer pointer in iobuffer destructor --- src/zencore/compactbinaryvalidation.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'src/zencore/compactbinaryvalidation.cpp') 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; -- cgit v1.2.3