diff options
| author | inspectredc <78732756+inspectredc@users.noreply.github.com> | 2025-04-02 12:56:30 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-02 07:56:30 -0400 |
| commit | 2476a7752dfcc3c0c59921d1c5f9239af1e871f4 (patch) | |
| tree | 09fcdde660b68e645b6513b51541d54746677c3a | |
| parent | a5a80bd8a25794ec5f69e4b512e181e457c9ba47 (diff) | |
Use sOptionsMenuSettings to avoid OOB read (#5277)
| -rw-r--r-- | soh/src/overlays/gamestates/ovl_file_choose/z_file_nameset_NES.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/soh/src/overlays/gamestates/ovl_file_choose/z_file_nameset_NES.c b/soh/src/overlays/gamestates/ovl_file_choose/z_file_nameset_NES.c index 609fe5d66..6d1e1d575 100644 --- a/soh/src/overlays/gamestates/ovl_file_choose/z_file_nameset_NES.c +++ b/soh/src/overlays/gamestates/ovl_file_choose/z_file_nameset_NES.c @@ -1211,10 +1211,12 @@ void FileChoose_DrawOptionsImplNES(GameState* thisx) { //! @bug Mistakenly using sOptionsMenuHeaders instead of sOptionsMenuSettings for the height. //! This works out anyway because all heights are 16. + // #region SOH [Port] Just use sOptionsMenuSettings height instead gDPLoadTextureBlock(POLY_OPA_DISP++, sOptionsMenuSettings[i].texture[NTSC_LANGUAGE_INDEX], G_IM_FMT_IA, - G_IM_SIZ_8b, sOptionsMenuSettings[i].width, sOptionsMenuHeaders[i].height, 0, + G_IM_SIZ_8b, sOptionsMenuSettings[i].width, sOptionsMenuSettings[i].height, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + // #endregion gSP1Quadrangle(POLY_OPA_DISP++, vtx, vtx + 2, vtx + 3, vtx + 1, 0); } @@ -1238,10 +1240,12 @@ void FileChoose_DrawOptionsImplNES(GameState* thisx) { //! @bug Mistakenly using sOptionsMenuHeaders instead of sOptionsMenuSettings for the height. //! This is also an OOB read that happens to access the height of the first two elements in //! sOptionsMenuSettings, and since all heights are 16, it works out anyway. + // #region SOH [Port] Avoid UB and use sOptionsMenuSettings height instead gDPLoadTextureBlock(POLY_OPA_DISP++, sOptionsMenuSettings[i].texture[NTSC_LANGUAGE_INDEX], G_IM_FMT_IA, - G_IM_SIZ_8b, sOptionsMenuSettings[i].width, sOptionsMenuHeaders[i].height, 0, + G_IM_SIZ_8b, sOptionsMenuSettings[i].width, sOptionsMenuSettings[i].height, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + // #endregion gSP1Quadrangle(POLY_OPA_DISP++, vtx, vtx + 2, vtx + 3, vtx + 1, 0); } |
