mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +02:00
Fix memleak on some OSes in case network initialization fails. See
"[PATCH] tcp.c/udp.c memleak?" for discussion. Originally committed as revision 14923 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
ad33bfefc7
commit
e6c1381982
@ -41,6 +41,9 @@ static int tcp_open(URLContext *h, const char *uri, int flags)
|
||||
socklen_t optlen;
|
||||
char proto[1024],path[1024],tmp[1024];
|
||||
|
||||
if(!ff_network_init())
|
||||
return AVERROR(EIO);
|
||||
|
||||
url_split(proto, sizeof(proto), NULL, 0, hostname, sizeof(hostname),
|
||||
&port, path, sizeof(path), uri);
|
||||
if (strcmp(proto,"tcp")) goto fail;
|
||||
@ -55,9 +58,6 @@ static int tcp_open(URLContext *h, const char *uri, int flags)
|
||||
if (port <= 0 || port >= 65536)
|
||||
goto fail;
|
||||
|
||||
if(!ff_network_init())
|
||||
return AVERROR(EIO);
|
||||
|
||||
dest_addr.sin_family = AF_INET;
|
||||
dest_addr.sin_port = htons(port);
|
||||
if (resolve_host(&dest_addr.sin_addr, hostname) < 0)
|
||||
|
@ -348,6 +348,9 @@ static int udp_open(URLContext *h, const char *uri, int flags)
|
||||
|
||||
is_output = (flags & URL_WRONLY);
|
||||
|
||||
if(!ff_network_init())
|
||||
return AVERROR(EIO);
|
||||
|
||||
s = av_mallocz(sizeof(UDPContext));
|
||||
if (!s)
|
||||
return AVERROR(ENOMEM);
|
||||
@ -380,9 +383,6 @@ static int udp_open(URLContext *h, const char *uri, int flags)
|
||||
udp_set_remote_url(h, uri);
|
||||
}
|
||||
|
||||
if(!ff_network_init())
|
||||
return AVERROR(EIO);
|
||||
|
||||
if (s->is_multicast && !(h->flags & URL_WRONLY))
|
||||
s->local_port = port;
|
||||
udp_fd = udp_socket_create(s, &my_addr, &len);
|
||||
|
Loading…
Reference in New Issue
Block a user