Handle some invalid save function parameters.

This commit is contained in:
jjsat 2018-02-12 21:56:18 +01:00 committed by Ivan
commit bba7184090

View file

@ -695,6 +695,13 @@ static NEVER_INLINE s32 savedata_op(ppu_thread& ppu, u32 operation, u32 version,
case CELL_SAVEDATA_FILETYPE_SECUREFILE: case CELL_SAVEDATA_FILETYPE_SECUREFILE:
case CELL_SAVEDATA_FILETYPE_NORMALFILE: case CELL_SAVEDATA_FILETYPE_NORMALFILE:
{ {
if (!fileSet->fileName)
{
// ****** sysutil savedata parameter error : 69 ******
cellSaveData.error("savedata_op(): fileSet->fileName is NULL");
return CELL_SAVEDATA_ERROR_PARAM;
}
file_path = fileSet->fileName.get_ptr(); file_path = fileSet->fileName.get_ptr();
break; break;
} }
@ -725,6 +732,7 @@ static NEVER_INLINE s32 savedata_op(ppu_thread& ppu, u32 operation, u32 version,
default: default:
{ {
// ****** sysutil savedata parameter error : 61 ******
cellSaveData.error("savedata_op(): unknown fileSet->fileType (0x%x)", type); cellSaveData.error("savedata_op(): unknown fileSet->fileType (0x%x)", type);
return CELL_SAVEDATA_ERROR_PARAM; return CELL_SAVEDATA_ERROR_PARAM;
} }
@ -739,8 +747,23 @@ static NEVER_INLINE s32 savedata_op(ppu_thread& ppu, u32 operation, u32 version,
fs::file file(dir_path + file_path, fs::read); fs::file file(dir_path + file_path, fs::read);
if (!file) if (!file)
{ {
// ****** sysutil savedata parameter error : 22 ******
cellSaveData.error("Failed to open file %s%s", dir_path, file_path); cellSaveData.error("Failed to open file %s%s", dir_path, file_path);
return CELL_SAVEDATA_ERROR_FAILURE; return CELL_SAVEDATA_ERROR_PARAM;
}
if (fileSet->fileBufSize < fileSet->fileSize)
{
// ****** sysutil savedata parameter error : 72 ******
cellSaveData.error("savedata_op(): fileSet->fileBufSize < fileSet->fileSize");
return CELL_SAVEDATA_ERROR_PARAM;
}
if (!fileSet->fileBuf)
{
// ****** sysutil savedata parameter error : 73 ******
cellSaveData.error("savedata_op(): fileSet->fileBuf is NULL");
return CELL_SAVEDATA_ERROR_PARAM;
} }
file.seek(fileSet->fileOffset); file.seek(fileSet->fileOffset);