summaryrefslogtreecommitdiff
path: root/apps/codecs/libmusepack/streaminfo.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/codecs/libmusepack/streaminfo.c')
-rw-r--r--apps/codecs/libmusepack/streaminfo.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/apps/codecs/libmusepack/streaminfo.c b/apps/codecs/libmusepack/streaminfo.c
index 3303bc4d7d..b31e5f605a 100644
--- a/apps/codecs/libmusepack/streaminfo.c
+++ b/apps/codecs/libmusepack/streaminfo.c
@@ -101,8 +101,8 @@ mpc_get_encoder_string(mpc_streaminfo* si)
101static mpc_status check_streaminfo(mpc_streaminfo * si) 101static mpc_status check_streaminfo(mpc_streaminfo * si)
102{ 102{
103 if (si->max_band == 0 || si->max_band >= 32 103 if (si->max_band == 0 || si->max_band >= 32
104 || si->channels > 2) 104 || si->channels > 2 || si->channels == 0 || si->sample_freq == 0)
105 return MPC_STATUS_FILE; 105 return MPC_STATUS_FAIL;
106 return MPC_STATUS_OK; 106 return MPC_STATUS_OK;
107} 107}
108 108
@@ -160,6 +160,7 @@ streaminfo_read_header_sv7(mpc_streaminfo* si, mpc_bits_reader * r)
160*/ 160*/
161 161
162 if (last_frame_samples == 0) last_frame_samples = MPC_FRAME_LENGTH; 162 if (last_frame_samples == 0) last_frame_samples = MPC_FRAME_LENGTH;
163 else if (last_frame_samples > MPC_FRAME_LENGTH) return MPC_STATUS_FAIL;
163 si->samples = (mpc_int64_t) frames * MPC_FRAME_LENGTH; 164 si->samples = (mpc_int64_t) frames * MPC_FRAME_LENGTH;
164 if (si->is_true_gapless) 165 if (si->is_true_gapless)
165 si->samples -= (MPC_FRAME_LENGTH - last_frame_samples); 166 si->samples -= (MPC_FRAME_LENGTH - last_frame_samples);
@@ -196,11 +197,11 @@ streaminfo_read_header_sv8(mpc_streaminfo* si, const mpc_bits_reader * r_in,
196 197
197 CRC = (mpc_bits_read(&r, 16) << 16) | mpc_bits_read(&r, 16); 198 CRC = (mpc_bits_read(&r, 16) << 16) | mpc_bits_read(&r, 16);
198 if (CRC != mpc_crc32(r.buff + 1 - (r.count >> 3), (int)block_size - 4)) 199 if (CRC != mpc_crc32(r.buff + 1 - (r.count >> 3), (int)block_size - 4))
199 return MPC_STATUS_FILE; 200 return MPC_STATUS_FAIL;
200 201
201 si->stream_version = mpc_bits_read(&r, 8); 202 si->stream_version = mpc_bits_read(&r, 8);
202 if (si->stream_version != 8) 203 if (si->stream_version != 8)
203 return MPC_STATUS_INVALIDSV; 204 return MPC_STATUS_FAIL;
204 205
205 mpc_bits_get_size(&r, &si->samples); 206 mpc_bits_get_size(&r, &si->samples);
206 mpc_bits_get_size(&r, &si->beg_silence); 207 mpc_bits_get_size(&r, &si->beg_silence);