ARG1,ARG2);
PRE_REG_READ2(int, "sigwaitinfo",
const vki_sigset_t *, set, vki_siginfo_t *, info);
- if (ARG1 != 0) {
- PRE_MEM_READ( "sigwaitinfo(set)", ARG1, sizeof(vki_sigset_t));
- }
+ PRE_MEM_READ( "sigwaitinfo(set)", ARG1, sizeof(vki_sigset_t));
if (ARG2 != 0) {
PRE_MEM_WRITE( "sigwaitinfo(info)", ARG2, sizeof(vki_siginfo_t) );
}
ARG1,ARG2);
PRE_REG_READ2(int, "sigwait",
const vki_sigset_t *, set, int *, sig);
- if (ARG1 != 0) {
- PRE_MEM_READ( "sigwait(set)", ARG1, sizeof(vki_sigset_t));
- vki_sigset_t* set = (vki_sigset_t*)ARG1;
- if (ML_(safe_to_deref)(set, sizeof(vki_sigset_t))) {
- *flags |= SfMayBlock;
- }
- }
- if (ARG2 != 0) {
- PRE_MEM_WRITE( "sigwait(sig)", ARG2, sizeof(int));
+ PRE_MEM_READ( "sigwait(set)", ARG1, sizeof(vki_sigset_t));
+ vki_sigset_t* set = (vki_sigset_t*)ARG1;
+ if (ML_(safe_to_deref)(set, sizeof(vki_sigset_t))) {
+ *flags |= SfMayBlock;
}
+ PRE_MEM_WRITE( "sigwait(sig)", ARG2, sizeof(int));
}
+// sigwait doesn't follow the norm of returning -1 on error
+// instead it returns errno if there is an error
POST(sys_sigwait)
{
- if (RES == 0 && ARG2 != 0) {
+ if (RES == 0)
+ {
POST_MEM_WRITE( ARG2, sizeof(int));
}
}
/* SYS_sigwaitinfo 346 */
GO(SYS_sigwaitinfo, "2s 2m");
- SY(SYS_sigwaitinfo, x0+1, x0+2, x0+3); FAIL;
+ SY(SYS_sigwaitinfo, x0+1, x0+2); FAIL;
+
+ GO(SYS_sigwaitinfo, "(NULL info) 2s 1m");
+ SY(SYS_sigwaitinfo, x0, x0); FAIL;
+
/* SYS___acl_get_file 347 */
GO(SYS___acl_get_file, "3s 2m");
SY(SYS_sigwait, x0+1, x0+2); SUCC;
assert(res == EFAULT);
+ GO(SYS_sigwait, "(NULL ags) 2s 2m");
+ SY(SYS_sigwait, x0, x0); SUCC;
+ assert(res == EFAULT);
+
// thr_create 430
/* SYS_thr_exit 431 */
...
Address 0x........ is not stack'd, malloc'd or (recently) free'd
+---------------------------------------------------------
+346: SYS_sigwaitinfo (NULL info) 2s 1m
+---------------------------------------------------------
+Syscall param sigwaitinfo(set) contains uninitialised byte(s)
+ ...
+
+Syscall param sigwaitinfo(info) contains uninitialised byte(s)
+ ...
+
+Syscall param sigwaitinfo(set) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
---------------------------------------------------------
347: SYS___acl_get_file 3s 2m
---------------------------------------------------------
...
Address 0x........ is not stack'd, malloc'd or (recently) free'd
+---------------------------------------------------------
+429: SYS_sigwait (NULL ags) 2s 2m
+---------------------------------------------------------
+Syscall param sigwait(set) contains uninitialised byte(s)
+ ...
+
+Syscall param sigwait(sig) contains uninitialised byte(s)
+ ...
+
+Syscall param sigwait(set) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+Syscall param sigwait(sig) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
---------------------------------------------------------
431: SYS_thr_exit other
---------------------------------------------------------