From bcdcd528b24f0382e9617b3a2827b66f015440b3 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Thu, 23 Jan 2014 00:41:42 -0800 Subject: [PATCH] Validate options in MsgDialog v3 per tests. --- Core/Dialog/PSPMsgDialog.cpp | 9 +++++++-- Core/Dialog/PSPMsgDialog.h | 26 +++++++++++++------------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/Core/Dialog/PSPMsgDialog.cpp b/Core/Dialog/PSPMsgDialog.cpp index 8b921ee929..2b582a66bf 100755 --- a/Core/Dialog/PSPMsgDialog.cpp +++ b/Core/Dialog/PSPMsgDialog.cpp @@ -54,7 +54,7 @@ int PSPMsgDialog::Init(unsigned int paramAddr) Memory::Memcpy(&messageDialog,paramAddr,size); // debug info - int optionsNotCoded = ((messageDialog.options | SCE_UTILITY_MSGDIALOG_DEBUG_OPTION_CODED) ^ SCE_UTILITY_MSGDIALOG_DEBUG_OPTION_CODED); + int optionsNotCoded = messageDialog.options & ~SCE_UTILITY_MSGDIALOG_OPTION_SUPPORTED; if(optionsNotCoded) { ERROR_LOG_REPORT(SCEUTILITY, "PSPMsgDialog options not coded : 0x%08x", optionsNotCoded); @@ -70,7 +70,7 @@ int PSPMsgDialog::Init(unsigned int paramAddr) } else if(size == SCE_UTILITY_MSGDIALOG_SIZE_V2 && messageDialog.type == 1) { - unsigned int validOp = SCE_UTILITY_MSGDIALOG_OPTION_TEXT | + unsigned int validOp = SCE_UTILITY_MSGDIALOG_OPTION_TEXTSOUND | SCE_UTILITY_MSGDIALOG_OPTION_YESNO | SCE_UTILITY_MSGDIALOG_OPTION_DEFAULT_NO; if (((messageDialog.options | validOp) ^ validOp) != 0) @@ -87,6 +87,11 @@ int PSPMsgDialog::Init(unsigned int paramAddr) flag |= DS_ERROR; messageDialog.result = SCE_UTILITY_MSGDIALOG_ERROR_BADOPTION; } + if (messageDialog.options & ~SCE_UTILITY_MSGDIALOG_OPTION_SUPPORTED) + { + flag |= DS_ERROR; + messageDialog.result = SCE_UTILITY_MSGDIALOG_ERROR_BADOPTION; + } } if(flag == 0) diff --git a/Core/Dialog/PSPMsgDialog.h b/Core/Dialog/PSPMsgDialog.h index 6ed0abaea8..05f594f846 100644 --- a/Core/Dialog/PSPMsgDialog.h +++ b/Core/Dialog/PSPMsgDialog.h @@ -19,22 +19,22 @@ #include "PSPDialog.h" -#define SCE_UTILITY_MSGDIALOG_OPTION_ERROR 0x00000000 -#define SCE_UTILITY_MSGDIALOG_OPTION_TEXT 0x00000001 -#define SCE_UTILITY_MSGDIALOG_OPTION_NOSOUND 0x00000002 -#define SCE_UTILITY_MSGDIALOG_OPTION_YESNO 0x00000010 -#define SCE_UTILITY_MSGDIALOG_OPTION_OK 0x00000020 -#define SCE_UTILITY_MSGDIALOG_OPTION_NOCANCEL 0x00000080 -#define SCE_UTILITY_MSGDIALOG_OPTION_DEFAULT_NO 0x00000100 +#define SCE_UTILITY_MSGDIALOG_OPTION_ERRORSOUND 0x00000000 +#define SCE_UTILITY_MSGDIALOG_OPTION_TEXTSOUND 0x00000001 +#define SCE_UTILITY_MSGDIALOG_OPTION_NOSOUND 0x00000002 +#define SCE_UTILITY_MSGDIALOG_OPTION_YESNO 0x00000010 +#define SCE_UTILITY_MSGDIALOG_OPTION_OK 0x00000020 +#define SCE_UTILITY_MSGDIALOG_OPTION_NOCANCEL 0x00000080 +#define SCE_UTILITY_MSGDIALOG_OPTION_DEFAULT_NO 0x00000100 -#define SCE_UTILITY_MSGDIALOG_SIZE_V1 572 -#define SCE_UTILITY_MSGDIALOG_SIZE_V2 580 -#define SCE_UTILITY_MSGDIALOG_SIZE_V3 708 +#define SCE_UTILITY_MSGDIALOG_SIZE_V1 572 +#define SCE_UTILITY_MSGDIALOG_SIZE_V2 580 +#define SCE_UTILITY_MSGDIALOG_SIZE_V3 708 -#define SCE_UTILITY_MSGDIALOG_DEBUG_OPTION_CODED 0x000001B3 // OR of all options coded to display warning +#define SCE_UTILITY_MSGDIALOG_OPTION_SUPPORTED 0x000001B3 // OR of all options coded to display warning -#define SCE_UTILITY_MSGDIALOG_ERROR_BADOPTION 0x80110501 -#define SCE_UTILITY_MSGDIALOG_ERROR_ERRORCODEINVALID 0x80110502 +#define SCE_UTILITY_MSGDIALOG_ERROR_BADOPTION 0x80110501 +#define SCE_UTILITY_MSGDIALOG_ERROR_ERRORCODEINVALID 0x80110502 struct pspMessageDialog {