X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Fsyscalls.c;h=9775be394ca919356499fb5f95a4f716467953d2;hb=c90f683ef8d3dde9db5b78feebe5508ca3f84ff3;hp=e304b40e2a9c25a1b5fd0fddec6e820229b69b13;hpb=8ed2da7e1d43b4aba384946ad5b9779071d2a40f;p=tpg%2Facess2.git diff --git a/Kernel/syscalls.c b/Kernel/syscalls.c index e304b40e..9775be39 100644 --- a/Kernel/syscalls.c +++ b/Kernel/syscalls.c @@ -68,9 +68,6 @@ void SyscallHandler(tSyscallRegs *Regs) case SYS_CLONE: // Call clone system call ret = Proc_Clone(Regs->Arg1); - // Change user stack if a new stack address is passed - if(ret == 0 && Regs->Arg2) - Regs->StackPointer = Regs->Arg2; break; // -- Send a signal @@ -159,16 +156,19 @@ void SyscallHandler(tSyscallRegs *Regs) CHECK_NUM_NONULL( &tmp[i], sizeof(char*) ); CHECK_STR_NONULL( tmp[i] ); } + if(ret == -1) break; // Check EnvP also // - EnvP can be NULL if( Regs->Arg3 ) { tmp = (char**)Regs->Arg3; - //Log("tmp = %p", tmp); + CHECK_NUM_NONULL(tmp, sizeof(char**)); + Log("tmp = %p", tmp); for(i=0;tmp[i];i++) { - CHECK_NUM_NULLOK( &tmp[i], sizeof(char*) ); + CHECK_NUM_NONULL( &tmp[i], sizeof(char*) ); CHECK_STR_NONULL( tmp[i] ); } + if(ret == -1) break; } } LEAVE('s', "Assuming 0"); @@ -315,8 +315,9 @@ void SyscallHandler(tSyscallRegs *Regs) // -- Debug //#if DEBUG_BUILD case SYS_DEBUG: + CHECK_STR_NONULL( (char*)Regs->Arg1 ); LogF("Log: [%i] ", Threads_GetTID()); - LogF((char*)Regs->Arg1, + LogF((const char*)Regs->Arg1, Regs->Arg2, Regs->Arg3, Regs->Arg4, Regs->Arg5, Regs->Arg6); LogF("\r\n"); break;