case VKI_DOOR_SETPARAM:
PRE_REG_READ3(long, "door", long, arg1, long, arg2, long, arg3);
PRE_REG_READ_SIXTH_ONLY;
- VG_(unimplemented)("DOOR_SETPARAM");
+ if (!ML_(fd_allowed)(ARG1, "door_setparam", tid, False))
+ SET_STATUS_Failure(VKI_EBADF);
break;
default:
VG_(unimplemented)("Syswrap of the door call with subcode %ld.", SARG6);
SY(SYS_door, x0, x0 + ¶ms, x0, x0, x0, x0 + DOOR_CALL); FAIL;
}
+__attribute__((noinline))
+static void sys_door6(void)
+{
+ GO(SYS_door, "(DOOR_SETPARAM) 4s 0m");
+ SY(SYS_door, x0, x0 - 1, x0 + 1, x0, x0, x0 + DOOR_SETPARAM); FAIL;
+}
+
__attribute__((noinline))
static void sys_pset(void)
{
sys_door3();
sys_door4();
sys_door5();
+ sys_door6();
/* XXX Additional sys_door variants still unimplemented. */
/* SYS_setreuid 202 */
...
Address 0x........ is not stack'd, malloc'd or (recently) free'd
+---------------------------------------------------------
+201: SYS_door (DOOR_SETPARAM) 4s 0m
+---------------------------------------------------------
+Syscall param door(arg1) contains uninitialised byte(s)
+ ...
+
+Syscall param door(arg2) contains uninitialised byte(s)
+ ...
+
+Syscall param door(arg3) contains uninitialised byte(s)
+ ...
+
+Syscall param door(subcode) contains uninitialised byte(s)
+ ...
+
---------------------------------------------------------
202: SYS_setreuid 2s 0m
---------------------------------------------------------