avcodec/bmp_parser: delay frame end detection to the next header or EOF
authorMichael Niedermayer <michaelni@gmx.at>
Sat, 13 Sep 2014 15:46:18 +0000 (17:46 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Sat, 13 Sep 2014 15:46:18 +0000 (17:46 +0200)
Fixes Ticket3687

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/bmp_parser.c

index b5845ed..c9493dc 100644 (file)
@@ -62,11 +62,13 @@ restart:
                     bpc->pc.frame_start_found = 0;
                     continue;
                 }
-                if (bpc->fsize <= ihsize + 14)
-                    bpc->fsize = INT_MAX/2;
                 bpc->pc.frame_start_found++;
                 bpc->remaining_size = bpc->fsize + i - 17;
-                goto restart;
+
+                if (bpc->pc.index + i > 17) {
+                    next = i - 17;
+                } else
+                    goto restart;
             } else if (bpc->pc.frame_start_found)
                 bpc->pc.frame_start_found++;
         }
@@ -77,7 +79,9 @@ restart:
             bpc->remaining_size -= i;
             if (bpc->remaining_size)
                 goto flush;
-            next = i;
+
+            bpc->pc.frame_start_found = 0;
+            goto restart;
         }
     }