From: Miod Vallat Date: Thu, 21 May 2026 13:08:49 +0000 (+0200) Subject: Perform length check in RecordTextReader::xfrBlob(). X-Git-Tag: auth-5.1.0~31^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=095d0a54e40c2d401950b769525ee54b9e721959;p=thirdparty%2Fpdns.git Perform length check in RecordTextReader::xfrBlob(). Signed-off-by: Miod Vallat --- diff --git a/pdns/rcpgenerator.cc b/pdns/rcpgenerator.cc index 86d8e02231..5e31b250bb 100644 --- a/pdns/rcpgenerator.cc +++ b/pdns/rcpgenerator.cc @@ -327,7 +327,7 @@ void RecordTextReader::xfrBlobNoSpaces(string& val, int len) throw RecordTextException("Record length "+std::to_string(val.size()) + " does not match expected length '"+std::to_string(len)); } -void RecordTextReader::xfrBlob(string& val, int) +void RecordTextReader::xfrBlob(string& val, int len) { skipSpaces(); auto pos = d_pos; @@ -342,6 +342,10 @@ void RecordTextReader::xfrBlob(string& val, int) boost::erase_all(tmp," "); val.clear(); B64Decode(tmp, val); + + if (len>-1 && val.size() != static_cast(len)) { + throw RecordTextException("Record length "+std::to_string(val.size()) + " does not match expected length '"+std::to_string(len)); + } } void RecordTextReader::xfrRFC1035CharString(string &val) {