On Mon, Apr 6, 2020 at 1:16 AM Michael Niedermayer
<mich...@niedermayer.cc> wrote:
>
> On Sun, Apr 05, 2020 at 04:13:28PM +0530, gautamr...@gmail.com wrote:
> > From: Gautam Ramakrishnan <gautamr...@gmail.com>
> >
> > This patch adds functional changes to support the
> > PPT marker. This patch fixes bug ticket #4610.
> > ---
> >  libavcodec/jpeg2000dec.c | 88 +++++++++++++++++++++++++++++++++++-----
> >  1 file changed, 77 insertions(+), 11 deletions(-)
> >
> > diff --git a/libavcodec/jpeg2000dec.c b/libavcodec/jpeg2000dec.c
> > index 732d88e6fc..2af3c61c37 100644
> > --- a/libavcodec/jpeg2000dec.c
> > +++ b/libavcodec/jpeg2000dec.c
> > @@ -83,6 +83,10 @@ typedef struct Jpeg2000Tile {
> >      Jpeg2000QuantStyle  qntsty[4];
> >      Jpeg2000POC         poc;
> >      Jpeg2000TilePart    tile_part[32];
> > +    uint8_t             has_ppt;                // whether this tile has a 
> > ppt marker
> > +    uint8_t             *packed_headers;        // contains packed 
> > headers. Used only along with PPT marker
> > +    int                 packed_headers_size;    // size in bytes of the 
> > packed headers
> > +    GetByteContext      packed_headers_stream;  // byte context 
> > corresponding to packed headers
> >      uint16_t tp_idx;                    // Tile-part index
> >      int coord[2][2];                    // border coordinates {{x0, x1}, 
> > {y0, y1}}
> >  } Jpeg2000Tile;
> > @@ -855,6 +859,37 @@ static int get_plt(Jpeg2000DecoderContext *s, int n)
> >      return 0;
> >  }
> >
> > +static int get_ppt(Jpeg2000DecoderContext *s, int n)
> > +{
> > +    Jpeg2000Tile *tile;
> > +
> > +    if (s->curtileno < 0)
> > +        return AVERROR_INVALIDDATA;
> > +
> > +    tile = &s->tile[s->curtileno];
> > +    if (tile->tp_idx != 0) {
> > +        av_log(s->avctx, AV_LOG_ERROR,
> > +               "PPT marker can occur only on first tile part of a 
> > tile.\n");
> > +        return AVERROR_INVALIDDATA;
> > +    }
> > +
> > +    tile->has_ppt = 1;  // this tile has a ppt marker
> > +    bytestream2_get_byte(&s->g); // Zppt is skipped and not used
>
>
> > +    if (!tile->packed_headers)
> > +        tile->packed_headers = av_malloc(n - 3);
> > +    else
> > +        tile->packed_headers = av_realloc(tile->packed_headers,
> > +                                          tile->packed_headers_size + n - 
> > 3);
>
> why is the special case with av_malloc() needed ?
>
The if else is to check whether this is the first time this tile is being
allocated its packed headers. If packed headers does not exist
exist, create it. The else condition is just to add a new packed
header to it.
>
> > +    if (!tile->packed_headers)
> > +        return AVERROR(ENOMEM);
>
> this is looks like a memleak as the original array has been overwritten but
> not deallocated
This was a check for the malloc failure
>
> thx
>
> [...]
> --
> Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> In fact, the RIAA has been known to suggest that students drop out
> of college or go to community college in order to be able to afford
> settlements. -- The RIAA
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".



-- 
-------------
Gautam |
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to