diff options
author | Erik de Castro Lopo <erikd@mega-nerd.com> | 2015-02-01 12:52:22 +1100 |
---|---|---|
committer | Erik de Castro Lopo <erikd@mega-nerd.com> | 2015-02-01 12:52:22 +1100 |
commit | d7de0bac5f209e7ee30f32d9a875371fbc6fd861 (patch) | |
tree | 29716209978bec912175051e0a252bf4f813d747 | |
parent | 3a94982e5093fc7786b3fd3abaa50592e0a04e30 (diff) |
src/aiff.c : Minor improvements for parser re-synching.
-rw-r--r-- | src/aiff.c | 11 |
1 files changed, 7 insertions, 4 deletions
@@ -1,5 +1,5 @@ /* -** Copyright (C) 1999-2014 Erik de Castro Lopo <erikd@mega-nerd.com> +** Copyright (C) 1999-2015 Erik de Castro Lopo <erikd@mega-nerd.com> ** Copyright (C) 2005 David Viens <davidv@plogue.com> ** ** This program is free software; you can redistribute it and/or modify @@ -844,16 +844,19 @@ aiff_read_header (SF_PRIVATE *psf, COMM_CHUNK *comm_fmt) break ; default : + if (chunk_size >= 0xffff0000) + done = SF_TRUE ; + if (psf_isprint ((marker >> 24) & 0xFF) && psf_isprint ((marker >> 16) & 0xFF) && psf_isprint ((marker >> 8) & 0xFF) && psf_isprint (marker & 0xFF)) - { psf_log_printf (psf, " %M : %d (unknown marker)\n", marker, chunk_size) ; + { psf_log_printf (psf, " %M : %u (unknown marker)\n", marker, chunk_size) ; psf_binheader_readf (psf, "j", chunk_size) ; break ; } ; - if ((chunk_size = psf_ftell (psf)) & 0x03) - { psf_log_printf (psf, " Unknown chunk marker %X at position %d. Resyncing.\n", marker, chunk_size - 4) ; + if (psf_ftell (psf) & 0x03) + { psf_log_printf (psf, " Unknown chunk marker at position %D. Resynching.\n", psf_ftell (psf) - 8) ; psf_binheader_readf (psf, "j", -3) ; break ; } ; |