X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Fsyscalls.c;h=5774dbe57e84e09b48eb2da380fc7430b458b31e;hb=d1f16adf5f2e94e836ea6658186a6ff6d94f54d8;hp=facc263cc13e7bb4f0a67e1ab0ca75751e1d0598;hpb=022489d90d45db122801e75f493b3846724427e8;p=tpg%2Facess2.git diff --git a/Kernel/syscalls.c b/Kernel/syscalls.c index facc263c..5774dbe5 100644 --- a/Kernel/syscalls.c +++ b/Kernel/syscalls.c @@ -119,9 +119,20 @@ void SyscallHandler(tSyscallRegs *Regs) // Binary Control // --- case SYS_EXECVE: + if( !Syscall_ValidString(Regs->Arg1) ) { + err = -EINVAL; + ret = -1; + break; + } ret = Proc_Execve((char*)Regs->Arg1, (char**)Regs->Arg2, (char**)Regs->Arg3); break; case SYS_LOADBIN: + if( !Syscall_ValidString(Regs->Arg1) + || !Syscall_Valid(sizeof(Uint), Regs->Arg2) ) { + err = -EINVAL; + ret = -1; + break; + } ret = Binary_Load((char*)Regs->Arg1, (Uint*)Regs->Arg2); break; @@ -129,6 +140,11 @@ void SyscallHandler(tSyscallRegs *Regs) // Virtual Filesystem // --- case SYS_OPEN: + if( !Syscall_ValidString(Regs->Arg1) ) { + err = -EINVAL; + ret = -1; + break; + } ret = VFS_Open((char*)Regs->Arg1, Regs->Arg2 | VFS_OPENFLAG_USER); break;