From dd14450424cc0d09ec37f4327c247209d16367f9 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Fri, 16 Nov 2012 01:26:04 -0800 Subject: [PATCH] CreateSema: Truncate and validate like the PSP. --- Core/HLE/sceKernelSemaphore.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Core/HLE/sceKernelSemaphore.cpp b/Core/HLE/sceKernelSemaphore.cpp index 60e57fd951..dc8d4d2ec4 100644 --- a/Core/HLE/sceKernelSemaphore.cpp +++ b/Core/HLE/sceKernelSemaphore.cpp @@ -120,11 +120,15 @@ void sceKernelCancelSema(SceUID id, int newCount, u32 numWaitThreadsPtr) //SceUID sceKernelCreateSema(const char *name, SceUInt attr, int initVal, int maxVal, SceKernelSemaOptParam *option); SceUID sceKernelCreateSema(const char* name, u32 attr, int initVal, int maxVal, u32 optionPtr) { + if (!name) + return SCE_KERNEL_ERROR_ERROR; + Semaphore *s = new Semaphore; SceUID id = kernelObjects.Create(s); s->ns.size = sizeof(NativeSemaphore); - strncpy(s->ns.name, name, 32); + strncpy(s->ns.name, name, 31); + s->ns.name[31] = 0; s->ns.attr = attr; s->ns.initCount = initVal; s->ns.currentCount = s->ns.initCount;