From 12509dd0c16c1f71fe97f17eb87b3eef84b342a1 Mon Sep 17 00:00:00 2001 From: David Cermak Date: Tue, 19 Oct 2021 16:55:16 +0200 Subject: [PATCH] mdns: Fix parsing non-standard queries Fix for packets containing unexpected domains, such as openthread.thread.home.arpa. If we find this packet we set the name entry as invalid, but continue with parsing as the packet might contain related queries for us. Closes https://github.com/espressif/esp-idf/issues/7694 --- components/mdns/mdns.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/components/mdns/mdns.c b/components/mdns/mdns.c index 4240a1a787..339afb3df4 100644 --- a/components/mdns/mdns.c +++ b/components/mdns/mdns.c @@ -248,6 +248,7 @@ static const uint8_t * _mdns_read_fqdn(const uint8_t * packet, const uint8_t * s buf[len] = '\0'; if (name->parts == 1 && buf[0] != '_' && (strcasecmp(buf, MDNS_DEFAULT_DOMAIN) != 0) + && (strcasecmp(buf, "arpa") != 0) && (strcasecmp(buf, "ip6") != 0) && (strcasecmp(buf, "in-addr") != 0)) { strlcat(name->host, ".", sizeof(name->host)); @@ -2468,7 +2469,8 @@ static const uint8_t * _mdns_parse_fqdn(const uint8_t * packet, const uint8_t * if (strcasecmp(name->domain, MDNS_DEFAULT_DOMAIN) == 0 || strcasecmp(name->domain, "arpa") == 0) { return next_data; } - return 0; + name->invalid = true; // mark the current name invalid, but continue with other question + return next_data; } /**