11.1.0-34: Difference between revisions
No edit summary |
Emufan4568 (talk | contribs) mNo edit summary |
||
(10 intermediate revisions by 2 users not shown) | |||
Line 12: | Line 12: | ||
===NATIVE_FIRM=== | ===NATIVE_FIRM=== | ||
==== | ====ARM9==== | ||
No changes to code at all. | No changes to Old3DS/New3DS code at all(plaintext FIRM ARM9 binary / arm9loader). | ||
Only differences are in the minversion list, which updated the minimum versions for Home Menu, Internet Browser, DSP, friends, NS, and NATIVE_FIRM to latest. | Only differences are in the minversion list, which updated the minimum versions for Home Menu, Internet Browser, DSP, friends, NS, and NATIVE_FIRM to latest. | ||
====ARM11-kernel==== | ====ARM11-kernel==== | ||
Exactly 3 functions were updated, these are for [[Memory_Management]]. In the New3DS kernel: | Exactly 3 functions were updated, these are for [[Memory_Management]]. Validation code for [[Memory_Management|memchunk-headers]] was changed. In the New3DS kernel: | ||
* L_fff1aab0, prev ver @ L_fff1aab0. | * L_fff1aab0, prev ver @ L_fff1aab0. | ||
* L_fff1c730, prev ver @ L_fff1c6f0. | * L_fff1c730, prev ver @ L_fff1c6f0. | ||
* L_fff26410, prev ver @ L_fff26394. | * L_fff26410, prev ver @ L_fff26394. | ||
All three functions now prevent negative chunk sizes to be used, which could have been used with hypotetical kernel-memory-read vulnerabilities to exploit the memory-management code. | |||
The first function ("validateChunk") now makes sure that: | |||
chunk + currentChunkSize >= currentChunk | |||
when checking that the current chunk doesn't overlap with either the previous or next one. | |||
The second function ("Kern::ControlMemory"), aside from other small changes, now makes additional checks on the previously allocated memory chunk; the code for that is now: | |||
if(chunkSizeInPages >= regionSize >> 12 || chunk < regionBase || chunk + chunkSize < chunk || chunk + chunkSize > regionBase + regionSize) panic; | |||
The third function ("insertChunk") now makes the following checks: | |||
if(chunkSizeInPages >= regionSize >> 12 || regionBase + regionSize < chunk + chunkSize) panic; | |||
// ... | |||
if(leftChunk && leftChunk + leftChunkSize <= leftChunk) panic; // this check was already done on 'right' | |||
====FIRM-modules==== | ====FIRM-modules==== | ||
Line 46: | Line 63: | ||
* "Pokémon Moon" | * "Pokémon Moon" | ||
A new FSUSER [[FS:CheckUpdatedDat|command]] was added. If the command returns an error, the caller assumes false. | |||
If the command returns an error, the caller assumes false. | |||
All code changes: | All code changes: | ||
Line 58: | Line 74: | ||
The code for [[APT:IsTitleAllowed]] was updated. | The code for [[APT:IsTitleAllowed]] was updated. | ||
It now adds a version check for SmileBASIC, and enforces minimum versions 7 for JAP and 2 for USA. | It now adds a version check for SmileBASIC, and enforces minimum [[Titles|major-versions]] 7 for JAP and 2 for USA. | ||
This means that smilehax is impossible on latest firmware. | This means that smilehax is impossible on latest firmware. | ||
Same function also now checks for the "Animal Crossing: New Leaf" title in EUR+JAP+USA, and checks if version is | Same function also now checks for the "Animal Crossing: New Leaf" title in EUR+JAP+USA, and checks if [[Titles|major-version]] is higher than 3. | ||
If version is | If version is <=3, it calls the new fs [[FS:CheckUpdatedDat|command]] with the title-id of the Animal Crossing game. | ||
If the new fs command returns true, it returns that the game is not allowed to be launched, otherwise it will launch it despite being too old. | If the new fs command returns true, it returns that the game is not allowed to be launched, otherwise it will launch it despite being too old. | ||
This functionality appears to be for preventing the user from switching from an newer version of the application to an older version, where the newer version isn't released yet at the time the sysupdate was released. The newer version would (presumably) write to savedata [[FS:CheckUpdatedDat|"/updated.dat"]], which would trigger launch-not-allowed if the user tries to run an older version of the application. | |||
The only other changes are for some initialization-related(?) code, which seem to be minor. | |||
====DSP-sysmodule==== | |||
The only actual ''code'' change was that the handler function called by the [[DSP:RegisterInterruptEvents]] function was updated. Validation code was added for the input at the beginning of the function. | |||
====friends-sysmodule==== | ====friends-sysmodule==== | ||
Line 78: | Line 101: | ||
* [https://yls8.mtheall.com/ninupdates/reports.php?date=09-13-16_12-05-19&sys=ctr] | * [https://yls8.mtheall.com/ninupdates/reports.php?date=09-13-16_12-05-19&sys=ctr] | ||
* [https://yls8.mtheall.com/ninupdates/reports.php?date=09-13-16_12-05-28&sys=ktr] | * [https://yls8.mtheall.com/ninupdates/reports.php?date=09-13-16_12-05-28&sys=ktr] | ||
[[Category:Firmware Versions]] |