From: Stefan BrĂ¼ns Date: Sat, 19 Jan 2019 21:41:12 +0000 (+0100) Subject: avahi: Fix leaking AvahiServiceResolver in the error paths X-Git-Tag: archive/raspbian/3.0.11.1-2+rpi1~1^2^2^2^2^2^2^2^2~6 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=e30c177221cac82e0e248907304a1fbfc664d6c7;p=vlc.git 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 --- 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; } }