mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-11-06 13:30:00 +00:00
Merge pull request #15321 from MarcZX10/r4/r50-ajm-bodies
fix(libSceAjm): check batch job buffer counts before the 8-bit cast
This commit is contained in:
2 files changed
+15
No files matched your search
@@ -2064,6 +2064,7 @@ int APS5_VABI sceAjmBatchJobControl(AjmBatchInfo* info, uint32_t instance, uint6
|
||||
}
|
||||
|
||||
int APS5_VABI sceAjmBatchJobRunSplit(AjmBatchInfo* info, uint32_t instance, uint64_t flags, const AjmBuffer* input_buffers, size_t input_buffers_num, const AjmBuffer* output_buffers, size_t output_buffers_num, void* sideband_output, size_t sideband_output_size) {
|
||||
if (input_buffers_num > 0xffu || output_buffers_num > 0xffu) return SCE_AJM_ERROR_INVALID_PARAMETER;
|
||||
auto header = MakeHeader(JobKind::Run, instance, sideband_output, sideband_output_size);
|
||||
header.flags = flags;
|
||||
header.inputCount = static_cast<std::uint32_t>(input_buffers_num);
|
||||
|
||||
@@ -931,6 +931,19 @@ void TestBatchBounds(std::uint32_t context) {
|
||||
#endif
|
||||
}
|
||||
|
||||
void TestBatchJobCountRange(std::uint32_t context) {
|
||||
(void)context;
|
||||
constexpr int invalidParameter = static_cast<int>(0x80930005);
|
||||
std::vector<std::uint8_t> storage(256);
|
||||
AjmBatchInfo info{};
|
||||
Require(sceAjmBatchInitialize(storage.data(), storage.size(), &info) == 0);
|
||||
const AjmBuffer buffer{storage.data(), 16};
|
||||
const std::size_t wrapped = (std::size_t{1} << 32) + 1;
|
||||
Require(sceAjmBatchJobRunSplit(&info, 0, 0, &buffer, wrapped, &buffer, 1, nullptr, 0) == invalidParameter);
|
||||
Require(sceAjmBatchJobRunSplit(&info, 0, 0, &buffer, 1, &buffer, wrapped, nullptr, 0) == invalidParameter);
|
||||
Require(info.offset == 0);
|
||||
}
|
||||
|
||||
void TestBatchWaitRelease(std::uint32_t context) {
|
||||
constexpr int invalidBatch = static_cast<int>(0x80930004);
|
||||
std::vector<std::uint8_t> batch(64);
|
||||
@@ -2606,6 +2619,7 @@ int main(int argc, char** argv) {
|
||||
TestGetInfo(context);
|
||||
TestGetStatistics(context);
|
||||
TestBatchBounds(context);
|
||||
TestBatchJobCountRange(context);
|
||||
TestBatchWaitRelease(context);
|
||||
TestInstanceHandleLifetime(context);
|
||||
TestBatchCancel(context);
|
||||
|
||||
Reference in new issue
Block a user