fix(mdns): Add support for fuzzing browses

This commit is contained in:
David Cermak
2026-05-27 12:34:17 +02:00
parent 1ca844d6d9
commit 7ec95d04a5
2 changed files with 20 additions and 1 deletions
@@ -81,6 +81,12 @@ elseif(NOT CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
message(WARNING "Missing LIBBSD library. Install libbsd-dev package and/or check linker directories.")
endif()
# Sanitizers for AFL fuzzing (unit tests enable these in unity/enable_testing.cmake)
if(NOT ENABLE_UNIT_TESTS)
target_compile_options(${PROJECT_NAME} PRIVATE -fsanitize=address -fsanitize=undefined)
target_link_options(${PROJECT_NAME} PRIVATE -fsanitize=address -fsanitize=undefined)
endif()
# Enable testing if unit tests are enabled
if(ENABLE_UNIT_TESTS)
include(unity/enable_testing.cmake)
+14 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2025-2026 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Unlicense OR CC0-1.0
*/
@@ -8,6 +8,7 @@
#include <stdint.h>
#include <unistd.h>
#include "esp_err.h"
#include "mdns.h"
#include "mdns_receive.h"
#include "mdns_responder.h"
#include "mdns_mem_caps.h"
@@ -16,6 +17,11 @@ esp_err_t mdns_packet_push(esp_ip_addr_t *addr, int port, mdns_if_t tcpip_if, ui
mdns_search_once_t *s_a, *s_aaaa, *s_ptr, *s_srv, *s_txt;
static void browse_notifier(mdns_result_t *result)
{
(void)result;
}
void init_responder(void)
{
mdns_ip_addr_t addr = { .addr = { .u_addr = ESP_IPADDR_TYPE_V4 } };
@@ -48,6 +54,10 @@ void init_responder(void)
s_ptr = mdns_query_async_new("minifritz", "_http", "_tcp", MDNS_TYPE_PTR, 1000, 1, NULL);
s_srv = mdns_query_async_new("fritz", "_http", "_tcp", MDNS_TYPE_SRV, 1000, 1, NULL);
s_txt = mdns_query_async_new("fritz", "_http", "_tcp", MDNS_TYPE_TXT, 1000, 1, NULL);
mdns_browse_new("_http", "_tcp", browse_notifier);
mdns_browse_new("_scanner", "_tcp", browse_notifier);
mdns_browse_new("_sleep", "_udp", browse_notifier);
}
void deinit_responder(void)
@@ -57,6 +67,9 @@ void deinit_responder(void)
mdns_query_async_delete(s_ptr);
mdns_query_async_delete(s_srv);
mdns_query_async_delete(s_txt);
mdns_browse_delete("_http", "_tcp");
mdns_browse_delete("_scanner", "_tcp");
mdns_browse_delete("_sleep", "_udp");
mdns_service_remove_all();
mdns_priv_responder_free();
}