Henrik Rydgård and Claude Opus 5.5
283ec4db4c
Atrac: Fix host heap overflow from a loop start past the end of the file
...
A crafted RIFF smpl chunk could put the stream read offset past the end
of the file. CalculateStreamInfo() and AddStreamData() then subtracted it
from the file size in unsigned arithmetic, the remaining size wrapped, and
the guest's data was copied to a guest-chosen distance past dataBuf_.
Check the offset before subtracting, and route every copy into dataBuf_
through a helper that clamps it to the file. SeekToSample() no longer
prefills from past the end, and dataBuf_'s slack covers a whole frame.
This is the old Atrac implementation, which is only used when chosen in
the config or when loading old savestates.
Discovered and reported by redthing1 (https://github.com/redthing1 ) of
V12 Security.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
2026-10-08 14:27:01 +02:00
Henrik Rydgård
4d7b51d8cb
Reimplement AA3 header parsing
2025-07-22 17:48:20 +02:00
Henrik Rydgård
5c77ff9147
Atrac: Rework the header dependencies
2025-06-25 11:34:07 +02:00
Henrik Rydgård
ea29fd284f
sceAtrac: Logging improvements, constification (and not)
2025-06-24 21:36:04 +02:00
Henrik Rydgård
870995a767
Mostly restore the old code path
2025-03-25 22:19:09 +01:00
Henrik Rydgård
5ea7729f66
More work on atrac-through-sas
2025-03-25 22:01:33 +01:00
Henrik Rydgård
172e54286e
Refactor a bit to make it easier to expose the streaming state to the debugger.
2025-03-25 22:01:33 +01:00
Henrik Rydgård
1bd5cffa1d
Initial work on re-implementing atrac-through-sas
2025-03-25 22:01:30 +01:00
Henrik Rydgård
e70dd3b2df
Break out AtracTrack into its own file. Add a little atrac analysis tool to ImDebugger (for future use)
2025-03-19 16:15:51 +01:00
Henrik Rydgård
ec169e9fa9
Sol Trigger fix
2025-03-19 11:41:13 +01:00
Henrik Rydgård
da2b3fdd13
Warning fixes. Don't clamp readsize to reported file size.
2025-03-19 10:42:32 +01:00
Henrik Rydgård
6d7625ea6b
Implement save state support, with backwards compatibility.
2025-03-18 09:36:33 +01:00
Henrik Rydgård
89a73be155
Compute the joint-stereo flag as needed instead of storing it.
2025-03-18 09:36:33 +01:00
Henrik Rydgård
01076d2a4f
InitLowLevel parameter cleanup
2025-03-18 09:36:33 +01:00
Henrik Rydgård
4a4332b22e
Remove hack where we snuck AtracID into the contexts. Not suppose to be there.
2025-03-18 09:36:33 +01:00
Henrik Rydgård
34c21ed271
track_ removal, part 2 - done!
2025-03-18 09:36:33 +01:00
Henrik Rydgård
02f06faad1
Atrac2 track_ removal, part 1
2025-03-18 09:36:33 +01:00
Henrik Rydgård
4379c1ad49
Rebase fixups
2025-03-18 09:36:33 +01:00
Henrik Rydgård
bb436cda8f
Reimplement a lot of logic, implement loop streaming properly
2025-03-18 09:36:33 +01:00
Henrik Rydgård
b99348383c
Some new findings, loop work
2025-03-18 09:36:33 +01:00
Henrik Rydgård
4d7a8b8233
Some type and comment cleanup
2025-03-18 09:36:33 +01:00
Henrik Rydgård
92737be87e
Minor simplification
2025-03-18 09:36:33 +01:00
Henrik Rydgård
9623cd4897
Fix playback of fully loaded tracks, fix memory leak
2025-03-18 09:36:33 +01:00
Henrik Rydgård
8b02766702
Some cleanup and refactor.
2025-03-18 09:36:33 +01:00
Henrik Rydgård
bab09ea30a
Implement sceAtracGetInternalError
2025-03-18 09:36:33 +01:00
Henrik Rydgård
54acb07ded
ImDebugger: Add more atrac information
2025-03-18 09:36:32 +01:00
Henrik Rydgård
724fc1dd95
Work on the new implementation.
2025-03-18 09:36:32 +01:00
Henrik Rydgård
818e7a99bd
minor refactor
2025-03-17 11:02:59 +01:00
Henrik Rydgård
63c997b973
Fix an ordering issue in Atrac context creation
2025-03-16 22:46:44 +01:00
Henrik Rydgård
b7782d98f3
Prepare for Atrac context data to work the new way. Not actually active yet. Also restrict old versions to 4 contexts.
2025-03-16 19:32:03 +01:00
Henrik Rydgård
4fbdb58beb
Merge the "Analyze" function into SetData
2025-03-16 19:32:00 +01:00
Henrik Rydgård
3979b6af54
Combine the two Analyze functions
2025-03-16 12:59:32 +01:00
Henrik Rydgård
8ab41e387e
Reorganize to make the next step easier
2025-03-16 12:21:55 +01:00
Henrik Rydgård
bcf89754c7
First step: Split out the track analysis.
2025-03-16 12:21:55 +01:00
Henrik Rydgård
3d143a0cba
Finally get rid of the GetTrack() accessor
2025-03-16 11:29:00 +01:00
Henrik Rydgård
a3b43d8283
Refactor CurrentSample and ResetPlayPosition
2025-03-16 11:18:33 +01:00
Henrik Rydgård
fd9564166b
More GetTrack removal
2025-03-16 11:06:52 +01:00
Henrik Rydgård
b406f3a9d1
Move the GetSoundSample implementation behind the AtracBase interface
2025-03-16 09:48:13 +01:00
Henrik Rydgård
5bd1ae5bae
Move more validation logic into AtracBase
2025-03-16 09:48:13 +01:00
Henrik Rydgård
beaced1c87
Move loop status and reset info param validation in behind the AtracBase interface
2025-03-16 09:48:13 +01:00
Henrik Rydgård
9788a770a7
Add a DecodeLowLevel wrapper to the AtracBase interface
2025-03-16 09:47:36 +01:00
Henrik Rydgård
c33a86561f
Remove the strange "successCode" argument to SetData
2025-03-16 09:00:27 +01:00
Henrik Rydgård
812b22a224
Atrac: Forward-port comments from the other branches
2025-03-08 23:39:15 +01:00
Henrik Rydgård
59a4eb0ea5
Add Atrac error codes to the big enum
2025-02-24 12:07:21 -06:00
Henrik Rydgård
2eaffcf510
ImDebugger: Add atrac context viewer
2024-11-15 15:59:16 +01:00
Henrik Rydgård
917f5897bd
Add back a lost-in-refactoring hack for the SasAudio/sceAtrac integration.
...
Fixes #19075
2024-04-29 19:58:11 +02:00
Henrik Rydgård
5b625bfd3e
Share GetSecondBufferInfo between implementations
2024-04-16 23:07:03 +02:00
Henrik Rydgård
f05f9a6de3
Code cleanup and comments
2024-04-16 22:54:53 +02:00
Henrik Rydgård
f3d6c93339
Add empty AtracCtx2 implementation, and a dev setting to select it. Savestates don't work.
2024-04-15 13:50:16 +02:00
Henrik Rydgård
5e8a46fde0
Slim down the AtracBase class
2024-04-15 12:50:51 +02:00