png_parser: fix size of chunk_lenght
[ffmpeg.git] / libavcodec / png_parser.c
index 00cbb82..c66caf3 100644 (file)
@@ -36,7 +36,7 @@ typedef struct PNGParseContext {
     ParseContext pc;
 
     int chunk_pos;          ///< position inside current chunk
-    int chunk_length;       ///< length of the current chunk
+    uint32_t chunk_length;  ///< length of the current chunk
     int remaining_size;     ///< remaining size of the current chunk
 } PNGParseContext;
 
@@ -78,7 +78,7 @@ static int png_parse(AVCodecParserContext *s, AVCodecContext *avctx,
     for (; ppc->pc.frame_start_found && i < buf_size; i++) {
         ppc->pc.state = (ppc->pc.state << 8) | buf[i];
         if (ppc->chunk_pos == 3) {
-            ppc->chunk_length = AV_RL32(&ppc->pc.state);
+            ppc->chunk_length = ppc->pc.state;
             if (ppc->chunk_length > 0x7fffffff) {
                 ppc->chunk_pos = ppc->pc.frame_start_found = 0;
                 goto flush;
@@ -87,7 +87,7 @@ static int png_parse(AVCodecParserContext *s, AVCodecContext *avctx,
         } else if (ppc->chunk_pos == 7) {
             if (ppc->chunk_length >= buf_size - i)
                 ppc->remaining_size = ppc->chunk_length - buf_size + i + 1;
-            if (AV_RB32(&ppc->pc.state) == MKTAG('I', 'E', 'N', 'D')) {
+            if (ppc->pc.state == MKBETAG('I', 'E', 'N', 'D')) {
                 if (ppc->remaining_size)
                     ppc->chunk_pos = -1;
                 else