From 095d0a54e40c2d401950b769525ee54b9e721959 Mon Sep 17 00:00:00 2001 From: Miod Vallat Date: Thu, 21 May 2026 15:08:49 +0200 Subject: [PATCH] Perform length check in RecordTextReader::xfrBlob(). Signed-off-by: Miod Vallat --- pdns/rcpgenerator.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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) { -- 2.47.3