diff options
author | Ronald S. Bultje <rsbultje@gmail.com> | 2008-08-23 17:39:56 +0000 |
---|---|---|
committer | Ronald S. Bultje <rsbultje@gmail.com> | 2008-08-23 17:39:56 +0000 |
commit | e6c13819825aab796965a96ffb451cd008eab647 (patch) | |
tree | 6e45aa7c44cc9bba91337aefdfbf4768a10cf851 | |
parent | ad33bfefc7e1a0ddc9569bfc480835cf2fd80272 (diff) | |
download | ffmpeg-e6c13819825aab796965a96ffb451cd008eab647.tar.gz |
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
-rw-r--r-- | libavformat/tcp.c | 6 | ||||
-rw-r--r-- | libavformat/udp.c | 6 |
2 files changed, 6 insertions, 6 deletions
diff --git a/libavformat/tcp.c b/libavformat/tcp.c index 957b1adfe7..9191960ca7 100644 --- a/libavformat/tcp.c +++ b/libavformat/tcp.c @@ -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) diff --git a/libavformat/udp.c b/libavformat/udp.c index effe6992ec..1730130730 100644 --- a/libavformat/udp.c +++ b/libavformat/udp.c @@ -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); |