diff --git a/libavformat/rtpproto.c b/libavformat/rtpproto.c index a8cbd97708af9625956eb20355360f736dfaf23a..71e6f0320bf74b738a6ce2dd6e39251048b0bbb6 100644 --- a/libavformat/rtpproto.c +++ b/libavformat/rtpproto.c @@ -232,8 +232,10 @@ static void rtp_parse_addr_list(URLContext *h, char *buf, ai = rtp_resolve_host(p, 0, SOCK_DGRAM, AF_UNSPEC, 0); if (ai) { source_addr = av_mallocz(sizeof(struct sockaddr_storage)); - if (!source_addr) + if (!source_addr) { + freeaddrinfo(ai); break; + } memcpy(source_addr, ai->ai_addr, ai->ai_addrlen); freeaddrinfo(ai);