On Wed, Aug 6, 2014 at 1:46 PM, Diego Biurrun <[email protected]> wrote:
> ---
>  libavformat/mpegtsenc.c | 21 ++++++++++++++++++---
>  1 file changed, 18 insertions(+), 3 deletions(-)
>

Was this reviewed before pushing? Didn't see a OK here.

> diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
> index 31e295d..c53e145 100644
> --- a/libavformat/mpegtsenc.c
> +++ b/libavformat/mpegtsenc.c
> @@ -430,9 +430,15 @@ static MpegTSService *mpegts_add_service(MpegTSWrite 
> *ts, int sid,
>          return NULL;
>      service->pmt.pid       = ts->pmt_start_pid + ts->nb_services;
>      service->sid           = sid;
> +    service->pcr_pid       = 0x1fff;
>      service->provider_name = av_strdup(provider_name);
>      service->name          = av_strdup(name);
> -    service->pcr_pid       = 0x1fff;
> +    if (!service->provider_name || !service->name) {
> +        free(service->provider_name);
> +        free(service->name);
> +        free(service);
> +        return NULL;
> +    }

av_free

>      dynarray_add(&ts->services, &ts->nb_services, service);
>      return service;
>  }
> @@ -474,6 +480,9 @@ static int mpegts_write_header(AVFormatContext *s)
>      service       = mpegts_add_service(ts, ts->service_id,
>                                         provider_name, service_name);
>
> +    if (!service)
> +        return AVERROR(ENOMEM);
> +
>      service->pmt.write_packet = section_write_packet;
>      service->pmt.opaque       = s;
>      service->pmt.cc           = 15;
> @@ -491,8 +500,10 @@ static int mpegts_write_header(AVFormatContext *s)
>      ts->sdt.opaque       = s;
>
>      pids = av_malloc(s->nb_streams * sizeof(*pids));
> -    if (!pids)
> +    if (!pids) {
> +        av_free(service);
>          return AVERROR(ENOMEM);
> +    }
>
>      /* assign pids to each stream */
>      for (i = 0; i < s->nb_streams; i++) {
> @@ -564,7 +575,10 @@ static int mpegts_write_header(AVFormatContext *s)
>                  ret = AVERROR(EINVAL);
>                  goto fail;
>              }
> -            ast = avformat_new_stream(ts_st->amux, NULL);
> +            if (!(ast = avformat_new_stream(ts_st->amux, NULL))) {
> +                ret = AVERROR(ENOMEM);
> +                goto fail;
> +            }
>              ret = avcodec_copy_context(ast->codec, st->codec);
>              if (ret != 0)
>                  goto fail;
> @@ -633,6 +647,7 @@ static int mpegts_write_header(AVFormatContext *s)
>      return 0;
>
>  fail:
> +    av_free(service);
>      av_free(pids);
>      for (i = 0; i < s->nb_streams; i++) {
>          st    = s->streams[i];
> --
> 1.8.3.2
>
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to