Commit Graph
285 Commits
Author SHA1 Message Date
Henrik RydgårdandClaude Opus 5.5 74c5cbf503 Savedata: Leave GetSize's needed strings alone when nothing is needed
Matches hardware; moves utility/savedata/getsize to tests_good.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-09-23 19:25:24 -06:00
Artem Lytkin 4c749a31cf Savedata: use PARAM.SFO's time as the save date in the dialog
GetSaveInfo() took the date from whichever file the directory listing
returned first, so a save whose ICON0.PNG is older than the rest showed
the icon's date in the save/load dialog. The savedata manager already
uses PARAM.SFO's time. Use that here too, keeping the first file as the
fallback when there's no PARAM.SFO.
2026-09-19 17:17:55 +03:00
keycross 0c95caccea Avoid validating unused savedata name lists 2026-08-28 21:38:58 +09:00
Henrik Rydgård 68ec34ad54 Build and warning fixes 2026-08-03 19:11:07 +02:00
Henrik Rydgård 0eef5d0164 Use shared HasPathTraversal utility for savedata name validation
Replace the inline lambdas in the savedata dialog with the new
HasPathTraversal() helper in Core/Util/PathUtil.
2026-08-01 13:16:21 +02:00
Henrik Rydgård 779cae6232 Reject path traversal in savedata name fields
gameName/saveName/fileName and the saveNameList entries are
guest-controlled and get concatenated into host filesystem paths, so a
crafted request could escape the save directory with ../ sequences.

- PSPSaveDialog::Init rejects requests whose name fields contain a path
  separator ('/' or '\') or are bare dot components.
- SavedataParam::SetPspParam rejects saveNameList entries the same way.
2026-08-01 13:16:21 +02:00
Henrik Rydgård 5194382b7b Fix out-of-bounds reads in PARAM.SFO parser
ReadSFO dereferenced index table entries without checking the table fit
within the buffer, and GetDataOffset had no bounds checks at all (reading
attacker-controlled offsets and strcmp'ing without a terminator guard).

- Validate the index table fits entirely within the buffer in ReadSFO.
- Add a size parameter to GetDataOffset and validate the index table,
  key/data table positions, and key string termination before use.
2026-07-31 20:54:17 +02:00
Henrik Rydgård 133c36f145 Minor logging cleanup in savedata 2026-03-02 00:24:19 +01:00
Henrik Rydgård 3dc7aa4a65 Add workaround for the Silent Hill: Shattered Memories. Thanks fcrwr!
Fixes #13781
2026-02-23 15:19:03 +01:00
Henrik Rydgård dac2407a36 sceIo: Add support for microseconds in filetimes (not implemented in platforms yet) 2026-02-23 11:04:17 +01:00
Henrik Rydgård 40a5cd1509 Minor logging improvement, refresh gamescreen on deleted savedata 2026-02-19 16:05:00 +01:00
Henrik Rydgård 0dd77f896a A few more string length safety fixes in SavedataParam.cpp 2026-02-18 11:24:55 +01:00
Henrik Rydgård f97a3d09bd Savedata: Fix rare crash bug found in Google Play reports 2026-02-18 11:24:36 +01:00
Henrik Rydgård dad8df3860 More logspam reduction 2026-02-10 15:05:29 +01:00
Henrik Rydgård 4d07fd6176 Avoid writing 0-sized ICON1 or SND0
Presumably this should also apply to PIC1 and ICON0 but let's keep the
change minimal.

Fixes #20443
2026-02-10 09:11:05 +01:00
Henrik Rydgård 6c324c6782 Minor cleanup 2026-01-01 13:47:19 +01:00
Henrik Rydgård 5f7a937466 Rename ValidSize to ClampValidSizeAt 2025-12-30 20:31:07 +01:00
Henrik Rydgård f5a211884b Minor cleanups, comments
Comments and warnings
2025-12-30 20:31:06 +01:00
Henrik Rydgård 1c49ad7b29 Support screen rotation on iOS (unrestricted) 2025-10-22 15:13:21 +02:00
Henrik Rydgård 5751e202a5 Remove redundant .c_str() 2025-08-31 13:37:43 +02:00
Henrik Rydgård f410b7e6ea Show a tiny indicator in the top left of the screen when the game is saving or loading. 2025-07-10 15:11:59 +02:00
Henrik Rydgård ecff4d03ee Update the naming of functions called by SavedataParam::EncryptData. Thanks Linblow, and Nemo for the reminder 2025-04-23 16:49:04 +02:00
Henrik Rydgård 0ecd72416b Reduce overhead of logging further. 2025-03-25 23:09:11 +01:00
Henrik Rydgård f14075e650 PPGe/savedata: Add a bunch of safety checks for png images. Fixes Digimon save crash, see #20125. 2025-03-21 10:07:42 +01:00
Henrik Rydgård 5080e9660a Remove an outdated hidden setting (bSavedataUpgrade) 2025-02-18 11:03:29 -06:00
Henrik Rydgård b2b0ff1753 Consolidate error codes in ErrorCodes.h 2025-02-04 11:53:00 -06:00
Henrik Rydgård 5c7ca3f972 Delete some unused structs 2025-01-10 21:18:45 +01:00
Henrik Rydgård 770538dd46 SavedataParam: Sanity check, read from the correct list when logging files.
See #19795
2025-01-03 00:49:08 +01:00
Henrik Rydgård c91169e702 Restore removed <algorithm> includes.
Turns out these were needed after all. For some reason, on Windows and
Mac, <algorithm> gets auto-included by something else so I don't notice
when it's missing, and MSVC's include dependency tracker doesn't see it
either.
2024-12-19 09:53:07 +01:00
Henrik Rydgård 3e198c53b2 More include cleanup 2024-12-18 13:57:26 +01:00
Henrik Rydgård eccf23cf3b Cleanup after prev PR 2024-11-30 02:51:48 +01:00
Henrik Rydgård 7cc59dcda1 Savedata multiload: Do a directory listing so we can filter missing directories faster. 2024-11-30 02:44:01 +01:00
Henrik Rydgård 84154e837e Avoid running the initial savedata size scan except on games that need it. 2024-11-29 15:48:39 +01:00
Henrik Rydgård 7e194d15e2 For the free-space savedata scan, only scan relevant subdirectories. 2024-11-29 15:34:22 +01:00
Henrik Rydgård 2e85eb5128 More static code analysis fixes 2024-10-28 17:59:06 +01:00
Henrik Rydgård b10c4f7fae Crashfix, warning fix, cleanup 2024-10-22 14:15:47 +02:00
Henrik Rydgård 1a89c26dc0 Warning fixes 2024-10-03 18:19:11 +02:00
Henrik Rydgård 9b8f18298a Translation fixes, etc
Thanks @TotalCaesar659
2024-09-27 10:15:52 +02:00
Herman Semenov 3c66f149d3 [Common/Core/Windows] Removed excess check pointer before delete or free() 2024-09-17 11:34:42 +02:00
Henrik Rydgård c2a38181ad Alternate solution for ModNation Racers metadata overwrite (see #18430 comments) 2024-09-10 19:06:22 +02:00
Henrik Rydgård f18715bb7c Some renaming 2024-07-16 22:04:41 +02:00
Henrik Rydgård 4582ee692a More logging changes 2024-07-16 22:04:41 +02:00
Henrik Rydgård 70cb1104dc Kirk: Remove use of uninitialized stack as a random number source
This confused Valgrind and made me think we had another memory bug.

Turns out this is NOT the cause of #13781, which I still don't
understand.
2024-07-16 22:04:41 +02:00
Henrik Rydgård cde71fc2b3 Misc cleanup 2024-07-16 22:04:41 +02:00
Henrik Rydgård f8bf0bfbb5 Add some new logging to sceUtility to try to figure out the Silent Hill problem 2024-07-16 22:04:41 +02:00
Henrik Rydgård e01ca5b057 Logging API change (refactor) (#19324)
* Rename LogType to Log

* Explicitly use the Log:: enum when logging. Allows for autocomplete when editing.

* Mac/ARM64 buildfix

* Do the same with the hle result log macros

* Rename the log names to mixed case while at it.

* iOS buildfix

* Qt buildfix attempt, ARM32 buildfix
2024-07-14 14:42:59 +02:00
Henrik Rydgård dae44c1120 SavedataParam: optimize PSPMatch 2024-05-05 11:51:31 +02:00
Henrik Rydgård b7f0a9029e More cleanup 2024-04-07 12:36:32 +02:00
Henrik Rydgård 79c553d004 Remove the zero-write in BuildHash 2024-04-07 12:31:45 +02:00
Henrik Rydgård 404600faa3 SavedataParam/ParamSFO: Minor code cleanups 2024-04-07 12:31:45 +02:00