From 89f950ca8870d7bf161362483bb8d2f762c147b0 Mon Sep 17 00:00:00 2001 From: Albert Vaca Cintora Date: Thu, 10 Oct 2024 15:07:12 +0200 Subject: [PATCH] Backport mdns.h updates from upstream --- core/backends/lan/mdns.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core/backends/lan/mdns.h b/core/backends/lan/mdns.h index 82f602289..48d3700bf 100644 --- a/core/backends/lan/mdns.h +++ b/core/backends/lan/mdns.h @@ -255,7 +255,7 @@ static inline int mdns_multiquery_send(int sock, const mdns_query_t* query, size_t count, void* buffer, size_t capacity, uint16_t query_id); -//! Receive unicast responses to a mDNS query sent with mdns_discovery_recv, optionally filtering +//! Receive unicast responses to a mDNS query sent with mdns_[multi]query_recv, optionally filtering //! out any responses not matching the given query ID. Set the query ID to 0 to parse all responses, //! even if it is not matching the query ID set in a specific query. Any data will be piped to the //! given callback for parsing. Buffer must be 32 bit aligned. Parsing is stopped when callback @@ -1110,6 +1110,9 @@ mdns_multiquery_send(int sock, const mdns_query_t* query, size_t count, void* bu data = mdns_string_make(buffer, capacity, data, query[iq].name, query[iq].length, nullptr); if (!data) return -1; + size_t remain = capacity - MDNS_POINTER_DIFF(data, buffer); + if (remain < 4) + return -1; // Record type data = mdns_htons(data, query[iq].type); //! Optional unicast response based on local port, class IN