From 6258edf23bf6d6e9bbd501a113b95f1e4eb0a4c8 Mon Sep 17 00:00:00 2001 From: caffreyfans Date: Fri, 17 Dec 2021 16:21:21 +0800 Subject: [PATCH] Fix mDNS memory leak * Original commit: espressif/esp-idf@119b4a9dd12cf89cc5eaf63f8aa19730607ef30b --- components/mdns/mdns.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/components/mdns/mdns.c b/components/mdns/mdns.c index c052a1ae1..0c2b0b6f3 100644 --- a/components/mdns/mdns.c +++ b/components/mdns/mdns.c @@ -2315,9 +2315,7 @@ static mdns_service_t * _mdns_create_service(const char * service, const char * if (hostname) { s->hostname = strndup(hostname, MDNS_NAME_BUF_LEN - 1); if (!s->hostname) { - free((char *)s->instance); - free(s); - return NULL; + goto fail; } } else { s->hostname = NULL; @@ -2325,20 +2323,27 @@ static mdns_service_t * _mdns_create_service(const char * service, const char * s->service = strndup(service, MDNS_NAME_BUF_LEN - 1); if (!s->service) { - free((char *)s->instance); - free(s); - return NULL; + goto fail; } s->proto = strndup(proto, MDNS_NAME_BUF_LEN - 1); if (!s->proto) { - free((char *)s->instance); free((char *)s->service); - free(s); - return NULL; + goto fail; } return s; + +fail: + if (s->instance) { + free(s->instance); + } + if (s->hostname) { + free(s->hostname); + } + free(s); + + return NULL; } /**