ffserver: Check allocations (likely not all)

Reviewed-by: "Reynaldo H. Verdejo Pinochet" <reynaldo@osg.samsung.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2015-06-06 15:34:17 +02:00
parent e225f5f232
commit d6039063aa
1 changed files with 20 additions and 0 deletions

View File

@ -1204,6 +1204,10 @@ static FFServerIPAddressACL* parse_dynamic_acl(FFServerStream *stream,
} }
acl = av_mallocz(sizeof(FFServerIPAddressACL)); acl = av_mallocz(sizeof(FFServerIPAddressACL));
if (!acl) {
fclose(f);
return NULL;
}
/* Build ACL */ /* Build ACL */
while (fgets(line, sizeof(line), f)) { while (fgets(line, sizeof(line), f)) {
@ -2123,15 +2127,20 @@ static int http_prepare_data(HTTPContext *c)
switch(c->state) { switch(c->state) {
case HTTPSTATE_SEND_DATA_HEADER: case HTTPSTATE_SEND_DATA_HEADER:
ctx = avformat_alloc_context(); ctx = avformat_alloc_context();
if (!ctx)
return AVERROR(ENOMEM);
c->fmt_ctx = *ctx; c->fmt_ctx = *ctx;
av_freep(&ctx); av_freep(&ctx);
av_dict_copy(&(c->fmt_ctx.metadata), c->stream->metadata, 0); av_dict_copy(&(c->fmt_ctx.metadata), c->stream->metadata, 0);
c->fmt_ctx.streams = av_mallocz_array(c->stream->nb_streams, c->fmt_ctx.streams = av_mallocz_array(c->stream->nb_streams,
sizeof(AVStream *)); sizeof(AVStream *));
if (!c->fmt_ctx.streams)
return AVERROR(ENOMEM);
for(i=0;i<c->stream->nb_streams;i++) { for(i=0;i<c->stream->nb_streams;i++) {
AVStream *src; AVStream *src;
c->fmt_ctx.streams[i] = av_mallocz(sizeof(AVStream)); c->fmt_ctx.streams[i] = av_mallocz(sizeof(AVStream));
/* if file or feed, then just take streams from FFServerStream struct */ /* if file or feed, then just take streams from FFServerStream struct */
if (!c->stream->feed || if (!c->stream->feed ||
c->stream->feed == c->stream) c->stream->feed == c->stream)
@ -2853,6 +2862,8 @@ static int prepare_sdp_description(FFServerStream *stream, uint8_t **pbuffer,
avc->streams[i]->codec = stream->streams[i]->codec; avc->streams[i]->codec = stream->streams[i]->codec;
} }
*pbuffer = av_mallocz(2048); *pbuffer = av_mallocz(2048);
if (!*pbuffer)
goto sdp_done;
av_sdp_create(&avc, 1, *pbuffer, 2048); av_sdp_create(&avc, 1, *pbuffer, 2048);
sdp_done: sdp_done:
@ -3369,6 +3380,10 @@ static AVStream *add_av_stream1(FFServerStream *stream,
return NULL; return NULL;
if (copy) { if (copy) {
fst->codec = avcodec_alloc_context3(codec->codec); fst->codec = avcodec_alloc_context3(codec->codec);
if (!fst->codec) {
av_free(fst);
return NULL;
}
avcodec_copy_context(fst->codec, codec); avcodec_copy_context(fst->codec, codec);
} else { } else {
/* live streams must use the actual feed's codec since it may be /* live streams must use the actual feed's codec since it may be
@ -3651,6 +3666,11 @@ static void build_feed_streams(void)
if (avio_check(feed->feed_filename, AVIO_FLAG_WRITE) <= 0) { if (avio_check(feed->feed_filename, AVIO_FLAG_WRITE) <= 0) {
AVFormatContext *s = avformat_alloc_context(); AVFormatContext *s = avformat_alloc_context();
if (!s) {
http_log("Failed to allocate context\n");
exit(1);
}
if (feed->readonly) { if (feed->readonly) {
http_log("Unable to create feed file '%s' as it is marked readonly\n", http_log("Unable to create feed file '%s' as it is marked readonly\n",
feed->feed_filename); feed->feed_filename);