From 2e5f8d687ff2f0085d2021b546468f2d83ae5b9f Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Sun, 18 Oct 2015 14:14:44 -0700 Subject: [PATCH] Atrac: Validate loop end and return an error. --- Core/HLE/sceAtrac.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Core/HLE/sceAtrac.cpp b/Core/HLE/sceAtrac.cpp index 8776780afb..a1c15bfe59 100644 --- a/Core/HLE/sceAtrac.cpp +++ b/Core/HLE/sceAtrac.cpp @@ -716,6 +716,12 @@ int Atrac::Analyze() { endSample = (dataChunkSize / atracBytesPerFrame) * atracSamplesPerFrame; } + int firstOffsetExtra = codecType == PSP_CODEC_AT3PLUS ? 368 : 69; + if (loopEndSample != -1 && loopEndSample + firstOffsetExtra >= endSample) { + WARN_LOG_REPORT(ME, "Atrac loop after end of data"); + return ATRAC_ERROR_BAD_CODEC_PARAMS; + } + return 0; }