Commit e97f38ce authored by Michael Niedermayer's avatar Michael Niedermayer

ffserver: use av_freep(), do not leave stale pointers in memory

Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent b530e2e3
...@@ -865,7 +865,7 @@ static void new_connection(int server_fd, int is_rtsp) ...@@ -865,7 +865,7 @@ static void new_connection(int server_fd, int is_rtsp)
fail: fail:
if (c) { if (c) {
av_free(c->buffer); av_freep(&c->buffer);
av_free(c); av_free(c);
} }
closesocket(fd); closesocket(fd);
...@@ -918,8 +918,8 @@ static void close_connection(HTTPContext *c) ...@@ -918,8 +918,8 @@ static void close_connection(HTTPContext *c)
if (ctx) { if (ctx) {
av_write_trailer(ctx); av_write_trailer(ctx);
av_dict_free(&ctx->metadata); av_dict_free(&ctx->metadata);
av_free(ctx->streams[0]); av_freep(&ctx->streams[0]);
av_free(ctx); av_freep(&ctx);
} }
h = c->rtp_handles[i]; h = c->rtp_handles[i];
if (h) if (h)
...@@ -940,7 +940,7 @@ static void close_connection(HTTPContext *c) ...@@ -940,7 +940,7 @@ static void close_connection(HTTPContext *c)
} }
for(i=0; i<ctx->nb_streams; i++) for(i=0; i<ctx->nb_streams; i++)
av_free(ctx->streams[i]); av_freep(&ctx->streams[i]);
av_freep(&ctx->streams); av_freep(&ctx->streams);
av_freep(&ctx->priv_data); av_freep(&ctx->priv_data);
...@@ -955,7 +955,7 @@ static void close_connection(HTTPContext *c) ...@@ -955,7 +955,7 @@ static void close_connection(HTTPContext *c)
av_freep(&c->pb_buffer); av_freep(&c->pb_buffer);
av_freep(&c->packet_buffer); av_freep(&c->packet_buffer);
av_free(c->buffer); av_freep(&c->buffer);
av_free(c); av_free(c);
nb_connections--; nb_connections--;
} }
...@@ -2800,14 +2800,14 @@ static int http_receive_data(HTTPContext *c) ...@@ -2800,14 +2800,14 @@ static int http_receive_data(HTTPContext *c)
s->pb = pb; s->pb = pb;
if (avformat_open_input(&s, c->stream->feed_filename, fmt_in, NULL) < 0) { if (avformat_open_input(&s, c->stream->feed_filename, fmt_in, NULL) < 0) {
av_free(pb); av_freep(&pb);
goto fail; goto fail;
} }
/* Now we have the actual streams */ /* Now we have the actual streams */
if (s->nb_streams != feed->nb_streams) { if (s->nb_streams != feed->nb_streams) {
avformat_close_input(&s); avformat_close_input(&s);
av_free(pb); av_freep(&pb);
http_log("Feed '%s' stream number does not match registered feed\n", http_log("Feed '%s' stream number does not match registered feed\n",
c->stream->feed_filename); c->stream->feed_filename);
goto fail; goto fail;
...@@ -2820,7 +2820,7 @@ static int http_receive_data(HTTPContext *c) ...@@ -2820,7 +2820,7 @@ static int http_receive_data(HTTPContext *c)
} }
avformat_close_input(&s); avformat_close_input(&s);
av_free(pb); av_freep(&pb);
} }
c->buffer_ptr = c->buffer; c->buffer_ptr = c->buffer;
} }
...@@ -2999,7 +2999,7 @@ static int prepare_sdp_description(FFStream *stream, uint8_t **pbuffer, ...@@ -2999,7 +2999,7 @@ static int prepare_sdp_description(FFStream *stream, uint8_t **pbuffer,
av_sdp_create(&avc, 1, *pbuffer, 2048); av_sdp_create(&avc, 1, *pbuffer, 2048);
sdp_done: sdp_done:
av_free(avc->streams); av_freep(&avc->streams);
av_dict_free(&avc->metadata); av_dict_free(&avc->metadata);
av_free(avc); av_free(avc);
av_free(avs); av_free(avs);
...@@ -3386,7 +3386,7 @@ static HTTPContext *rtp_new_connection(struct sockaddr_in *from_addr, ...@@ -3386,7 +3386,7 @@ static HTTPContext *rtp_new_connection(struct sockaddr_in *from_addr,
fail: fail:
if (c) { if (c) {
av_free(c->buffer); av_freep(&c->buffer);
av_free(c); av_free(c);
} }
return NULL; return NULL;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment