summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNils Wallménius <nils@rockbox.org>2010-08-03 09:48:57 +0000
committerNils Wallménius <nils@rockbox.org>2010-08-03 09:48:57 +0000
commitd42fd744e68a84c5a11803e36f2274a06c6927b6 (patch)
treef73b05a214d0fa46d320dc431c879ee16f136e57
parenta83adc7d6d0a16d08687a903da8a992e3affedcc (diff)
downloadrockbox-d42fd744e68a84c5a11803e36f2274a06c6927b6.tar.gz
rockbox-d42fd744e68a84c5a11803e36f2274a06c6927b6.zip
flac: error out if max blocksize is larger than we can handle.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27676 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/codecs/flac.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/apps/codecs/flac.c b/apps/codecs/flac.c
index c23611a50b..64d380d2a2 100644
--- a/apps/codecs/flac.c
+++ b/apps/codecs/flac.c
@@ -118,7 +118,13 @@ static bool flac_init(FLACContext* fc, int first_frame_offset)
118 118
119 fc->filesize = ci->filesize; 119 fc->filesize = ci->filesize;
120 fc->min_blocksize = (buf[0] << 8) | buf[1]; 120 fc->min_blocksize = (buf[0] << 8) | buf[1];
121 fc->max_blocksize = (buf[2] << 8) | buf[3]; 121 int max_blocksize = (buf[2] << 8) | buf[3];
122 if (max_blocksize > MAX_BLOCKSIZE)
123 {
124 LOGF("FLAC: Maximum blocksize is too large\n");
125 return false;
126 }
127 fc->max_blocksize = max_blocksize;
122 fc->min_framesize = (buf[4] << 16) | (buf[5] << 8) | buf[6]; 128 fc->min_framesize = (buf[4] << 16) | (buf[5] << 8) | buf[6];
123 fc->max_framesize = (buf[7] << 16) | (buf[8] << 8) | buf[9]; 129 fc->max_framesize = (buf[7] << 16) | (buf[8] << 8) | buf[9];
124 fc->samplerate = (buf[10] << 12) | (buf[11] << 4) 130 fc->samplerate = (buf[10] << 12) | (buf[11] << 4)