2.5 KiB
libSceIcu technical debt
Unknown function info
- ICU export availability across firmware versions remains unproven. The PS5 3.20 inventory includes the implemented escape, invariant-character and version helpers. BunnyFl’s firmware 13.42 report records
u_getVersionreturning78.1.0.0under an emulator, but neither escape function is in the checked nativesystem_ex/common_ex/lib/libSceIcu.sprxexport table. Only 104 of the 661 inventory NIDs appear among that module’s 299 exports. The exports for compatibility with older firmware are retained; availability and routing across firmware versions remain unproven.
Functional
-
Escape decoding has no behavior or ABI verification on console hardware. It follows ICU 78.1's ustring.cpp, including rejection of eight-digit braced hexadecimal escapes although its public header advertises up to eight digits. Null source or offset pointers, null callbacks with an in-range offset, negative capacity with a nonnull destination and source lengths exceeding
INT32_MAXthrow. Null-destination preflight ignores capacity. Closes when: compared with the console, including callback ABI, byte conversion, capacity limits and braced hexadecimal parsing. -
Invariant character and version helpers are unverified on a console.
u_charsToUChars,u_UCharsToChars,u_versionFromString,u_versionFromUStringandu_versionToStringfollow ICU 78.1 uinvchar.cpp and putil.cpp, unchanged since 65.1. Firmware 13.42 reports ICU 78.1 and exports none of them (#11013); the 3.20 table has all five. Version parts use the gueststrtoul, truncated to eight bits;u_versionToStringkeeps ICU's dropped zero tens digit (105 becomes15). A null buffer with a positive conversion length throws; ICU dereferences it. Closes when: compared with the console.