Skip to content
Snippets Groups Projects
Commit b3189aff authored by Martin Storsjö's avatar Martin Storsjö
Browse files

png_parser: Fix parsing on big endian


Since pc.state is populated by shifting in from the end of the
32 bit word, the content within pc.state is already in native endian
and should not be read with the AV_R{L,B} functions.

This was already done correctly for state64 above.

This fixes the fate-corepng test on big endian.

Signed-off-by: default avatarMartin Storsjö <martin@martin.st>
parent d8fd1836
No related branches found
No related tags found
No related merge requests found
...@@ -78,7 +78,7 @@ static int png_parse(AVCodecParserContext *s, AVCodecContext *avctx, ...@@ -78,7 +78,7 @@ static int png_parse(AVCodecParserContext *s, AVCodecContext *avctx,
for (; ppc->pc.frame_start_found && i < buf_size; i++) { for (; ppc->pc.frame_start_found && i < buf_size; i++) {
ppc->pc.state = (ppc->pc.state << 8) | buf[i]; ppc->pc.state = (ppc->pc.state << 8) | buf[i];
if (ppc->chunk_pos == 3) { if (ppc->chunk_pos == 3) {
ppc->chunk_length = AV_RL32(&ppc->pc.state); ppc->chunk_length = ppc->pc.state;
if (ppc->chunk_length > 0x7fffffff) { if (ppc->chunk_length > 0x7fffffff) {
ppc->chunk_pos = ppc->pc.frame_start_found = 0; ppc->chunk_pos = ppc->pc.frame_start_found = 0;
goto flush; goto flush;
...@@ -87,7 +87,7 @@ static int png_parse(AVCodecParserContext *s, AVCodecContext *avctx, ...@@ -87,7 +87,7 @@ static int png_parse(AVCodecParserContext *s, AVCodecContext *avctx,
} else if (ppc->chunk_pos == 7) { } else if (ppc->chunk_pos == 7) {
if (ppc->chunk_length >= buf_size - i) if (ppc->chunk_length >= buf_size - i)
ppc->remaining_size = ppc->chunk_length - buf_size + i + 1; 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) if (ppc->remaining_size)
ppc->chunk_pos = -1; ppc->chunk_pos = -1;
else else
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment