From e30c177221cac82e0e248907304a1fbfc664d6c7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Stefan=20Br=C3=BCns?= Date: Sat, 19 Jan 2019 22:41:12 +0100 Subject: [PATCH] avahi: Fix leaking AvahiServiceResolver in the error paths Signed-off-by: Thomas Guillem (cherry picked from commit 6d4afd268bbbf5c99609bd777d740a624cf7d705) Signed-off-by: Thomas Guillem Gbp-Pq: Name 0004-avahi-Fix-leaking-AvahiServiceResolver-in-the-error-.patch --- modules/services_discovery/avahi.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/modules/services_discovery/avahi.c b/modules/services_discovery/avahi.c index f1d4d06f..e73c44bf 100644 --- a/modules/services_discovery/avahi.c +++ b/modules/services_discovery/avahi.c @@ -148,7 +148,10 @@ static void resolve_callback( avahi_address_snprint(a, (sizeof(a)/sizeof(a[0]))-1, address); if( protocol == AVAHI_PROTO_INET6 ) if( asprintf( &psz_addr, "[%s]", a ) == -1 ) + { + avahi_service_resolver_free( r ); return; + } const char *psz_protocol = NULL; for( unsigned int i = 0; i < NB_PROTOCOLS; i++ ) @@ -157,7 +160,11 @@ static void resolve_callback( psz_protocol = protocols[i].psz_protocol; } if( psz_protocol == NULL ) + { + free( psz_addr ); + avahi_service_resolver_free( r ); return; + } if( txt != NULL ) asl = avahi_string_list_find( txt, "path" ); @@ -175,6 +182,7 @@ static void resolve_callback( port, value ) == -1 ) { free( psz_addr ); + avahi_service_resolver_free( r ); return; } } @@ -190,6 +198,7 @@ static void resolve_callback( psz_addr != NULL ? psz_addr : a, port ) == -1 ) { free( psz_addr ); + avahi_service_resolver_free( r ); return; } } -- 2.30.2