From: Otto Moerbeek Date: Wed, 5 Aug 2026 12:07:06 +0000 (+0200) Subject: rec: skip unexpected tags when deserializing protobuf messages X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fdb8b60dd023277d9e6e72e3dd04ceca0a09e662;p=thirdparty%2Fpdns.git rec: skip unexpected tags when deserializing protobuf messages Buys more robustness against future changes. Signed-off-by: Otto Moerbeek --- diff --git a/pdns/recursordist/rec-nsspeeds.cc b/pdns/recursordist/rec-nsspeeds.cc index 3daef07e29..5093024ec5 100644 --- a/pdns/recursordist/rec-nsspeeds.cc +++ b/pdns/recursordist/rec-nsspeeds.cc @@ -133,11 +133,17 @@ bool nsspeeds_t::putPBEntry(time_t cutoff, T& message) case PBNSSpeedMap::required_int32_last: last = map.get_int32(); break; + default: + map.skip(); + break; } } entry.insert(address, val, last); break; } + default: + message.skip(); + break; } } if (!entry.stale(cutoff)) { @@ -202,6 +208,9 @@ size_t nsspeeds_t::putPB(time_t cutoff, const std::string& pbuf) ++theCount; break; } + default: + full.skip(); + break; } } log->info(Logr::Info, "Processed nsspeed dump", "processed", Logging::Loggable(theCount), "inserted", Logging::Loggable(inserted)); diff --git a/pdns/recursordist/recursor_cache.cc b/pdns/recursordist/recursor_cache.cc index e566675b79..06ad2dea39 100644 --- a/pdns/recursordist/recursor_cache.cc +++ b/pdns/recursordist/recursor_cache.cc @@ -1150,6 +1150,7 @@ static void putAuthRecord(protozero::pbf_message& message, const D authRecord.d_clen = auth.get_uint32(); break; default: + auth.skip(); break; } } @@ -1221,6 +1222,7 @@ bool MemRecursorCache::putRecordSet(T& message) cacheEntry.d_tcp = message.get_bool(); break; default: + message.skip(); break; } } @@ -1289,6 +1291,9 @@ size_t MemRecursorCache::putRecordSets(const std::string& pbuf) ++count; break; } + default: + full.skip(); + break; } } log->info(Logr::Info, "Processed cache dump", "processed", Logging::Loggable(count), "inserted", Logging::Loggable(inserted));