On 29/06/16 18:03, Vittorio Giovara wrote:
> Avoid freeing an unallocated array in mov_read_close() in case
> of a malloc failure.
> 
> Signed-off-by: Vittorio Giovara <[email protected]>
> ---
>  libavformat/mov.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/libavformat/mov.c b/libavformat/mov.c
> index fe1f264..0cb3271 100644
> --- a/libavformat/mov.c
> +++ b/libavformat/mov.c
> @@ -1883,7 +1883,7 @@ static int mov_read_stsd(MOVContext *c, AVIOContext 
> *pb, MOVAtom atom)
>  {
>      AVStream *st;
>      MOVStreamContext *sc;
> -    int ret;
> +    int ret, entries;
>  
>      if (c->fc->nb_streams < 1)
>          return 0;
> @@ -1892,13 +1892,14 @@ static int mov_read_stsd(MOVContext *c, AVIOContext 
> *pb, MOVAtom atom)
>  
>      avio_r8(pb); /* version */
>      avio_rb24(pb); /* flags */
> -    sc->stsd_count = avio_rb32(pb); /* entries */
> +    entries = avio_rb32(pb);
>  
>      /* Prepare space for hosting multiple extradata. */
> -    sc->extradata = av_mallocz_array(sc->stsd_count, sizeof(*sc->extradata));
> +    sc->extradata = av_mallocz_array(entries, sizeof(*sc->extradata));
>      if (!sc->extradata)
>          return AVERROR(ENOMEM);
>  
> +    sc->stsd_count = entries;
>      sc->extradata_size = av_mallocz_array(sc->stsd_count, 
> sizeof(sc->extradata_size));
>      if (!sc->extradata_size)
>          return AVERROR(ENOMEM);
> 

Should be fine.

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to