// These ones may be Linux specific... not sure. They use 16-bit gid_t and
// uid_t types. The similarly named (minus the "16" suffix) ones below use
// 32-bit versions of these types.
-DECL_TEMPLATE(generic, sys_setuid16); // ## P
-DECL_TEMPLATE(generic, sys_getuid16); // ## P
-DECL_TEMPLATE(generic, sys_setgid16); // ## SVr4,SVID
-DECL_TEMPLATE(generic, sys_getgid16); // ## P
-DECL_TEMPLATE(generic, sys_geteuid16); // ## P
-DECL_TEMPLATE(generic, sys_getegid16); // ## P
-DECL_TEMPLATE(generic, sys_setreuid16); // ## BSD4.3
-DECL_TEMPLATE(generic, sys_setregid16); // ## BSD4.3
-DECL_TEMPLATE(generic, sys_getgroups16); // ## P
-DECL_TEMPLATE(generic, sys_setgroups16); // ## SVr4, SVID, X/OPEN, 4.3BSD
DECL_TEMPLATE(generic, sys_fchown16); // ## SVr4,BSD4.3
DECL_TEMPLATE(generic, sys_chown16); // ## P
DECL_TEMPLATE(linux, sys_capget);
DECL_TEMPLATE(linux, sys_capset);
+// These ones have 32-bit generic equivalents, but the 16-bit versions (they
+// use 16-bit gid_t and uid_t types) seem to be Linux-specific.
+DECL_TEMPLATE(linux, sys_getuid16);
+DECL_TEMPLATE(linux, sys_setuid16);
+DECL_TEMPLATE(linux, sys_getgid16);
+DECL_TEMPLATE(linux, sys_setgid16);
+DECL_TEMPLATE(linux, sys_geteuid16);
+DECL_TEMPLATE(linux, sys_getegid16);
+DECL_TEMPLATE(linux, sys_setreuid16);
+DECL_TEMPLATE(linux, sys_setregid16);
+DECL_TEMPLATE(linux, sys_getgroups16);
+DECL_TEMPLATE(linux, sys_setgroups16);
+
#endif // __PRIV_SYSWRAP_LINUX_H
/*--------------------------------------------------------------------*/
PRE_REG_READ2(long, "getpriority", int, which, int, who);
}
-PRE(sys_setregid16)
-{
- PRINT("sys_setregid16 ( %d, %d )", ARG1, ARG2);
- PRE_REG_READ2(long, "setregid16", vki_old_gid_t, rgid, vki_old_gid_t, egid);
-}
-
// The actual kernel definition of this routine takes a
// single 64 bit offset argument. This version is for 32 bit
// platforms only and treats the offset as two values - the
POST_MEM_WRITE( ARG2, RES );
}
-PRE(sys_getgroups16)
-{
- PRINT("sys_getgroups16 ( %d, %p )", ARG1, ARG2);
- PRE_REG_READ2(long, "getgroups16", int, size, vki_old_gid_t *, list);
- if (ARG1 > 0)
- PRE_MEM_WRITE( "getgroups16(list)", ARG2, ARG1 * sizeof(vki_old_gid_t) );
-}
-
POST(sys_getgroups16)
{
vg_assert(SUCCESS);
POST_MEM_WRITE( ARG1, RES );
}
-PRE(sys_geteuid16)
-{
- PRINT("sys_geteuid16 ( )");
- PRE_REG_READ0(long, "geteuid16");
-}
-
PRE(sys_geteuid)
{
PRINT("sys_geteuid ( )");
PRE_REG_READ0(long, "geteuid");
}
-PRE(sys_getegid16)
-{
- PRINT("sys_getegid16 ( )");
- PRE_REG_READ0(long, "getegid16");
-}
-
PRE(sys_getegid)
{
PRINT("sys_getegid ( )");
PRE_REG_READ0(long, "getegid");
}
-PRE(sys_getgid16)
-{
- PRINT("sys_getgid16 ( )");
- PRE_REG_READ0(long, "getgid16");
-}
-
PRE(sys_getgid)
{
PRINT("sys_getgid ( )");
}
}
-PRE(sys_getuid16)
-{
- PRINT("sys_getuid16 ( )");
- PRE_REG_READ0(long, "getuid16");
-}
-
PRE(sys_getuid)
{
PRINT("sys_getuid ( )");
PRE_MEM_READ( "select(timeout)", ARG5, sizeof(struct vki_timeval) );
}
-PRE(sys_setgid16)
-{
- PRINT("sys_setgid16 ( %d )", ARG1);
- PRE_REG_READ1(long, "setgid16", vki_old_gid_t, gid);
-}
-
PRE(sys_setgid)
{
PRINT("sys_setgid ( %d )", ARG1);
PRE_REG_READ0(long, "setsid");
}
-PRE(sys_setgroups16)
-{
- PRINT("sys_setgroups16 ( %llu, %p )", (ULong)ARG1, ARG2);
- PRE_REG_READ2(long, "setgroups16", int, size, vki_old_gid_t *, list);
- if (ARG1 > 0)
- PRE_MEM_READ( "setgroups16(list)", ARG2, ARG1 * sizeof(vki_old_gid_t) );
-}
-
PRE(sys_setgroups)
{
PRINT("setgroups ( %llu, %p )", (ULong)ARG1, ARG2);
PRE_REG_READ2(long, "setregid", vki_gid_t, rgid, vki_gid_t, egid);
}
-PRE(sys_setreuid16)
-{
- PRINT("setreuid16 ( 0x%x, 0x%x )", ARG1, ARG2);
- PRE_REG_READ2(long, "setreuid16", vki_old_uid_t, ruid, vki_old_uid_t, euid);
-}
-
PRE(sys_setreuid)
{
PRINT("sys_setreuid ( 0x%x, 0x%x )", ARG1, ARG2);
}
}
-PRE(sys_setuid16)
-{
- PRINT("sys_setuid16 ( %d )", ARG1);
- PRE_REG_READ1(long, "setuid16", vki_old_uid_t, uid);
-}
-
PRE(sys_setuid)
{
PRINT("sys_setuid ( %d )", ARG1);
ARG2, sizeof(struct __vki_user_cap_data_struct) );
}
+PRE(sys_getuid16)
+{
+ PRINT("sys_getuid16 ( )");
+ PRE_REG_READ0(long, "getuid16");
+}
+
+PRE(sys_setuid16)
+{
+ PRINT("sys_setuid16 ( %d )", ARG1);
+ PRE_REG_READ1(long, "setuid16", vki_old_uid_t, uid);
+}
+
+PRE(sys_getgid16)
+{
+ PRINT("sys_getgid16 ( )");
+ PRE_REG_READ0(long, "getgid16");
+}
+
+PRE(sys_setgid16)
+{
+ PRINT("sys_setgid16 ( %d )", ARG1);
+ PRE_REG_READ1(long, "setgid16", vki_old_gid_t, gid);
+}
+
+PRE(sys_geteuid16)
+{
+ PRINT("sys_geteuid16 ( )");
+ PRE_REG_READ0(long, "geteuid16");
+}
+
+PRE(sys_getegid16)
+{
+ PRINT("sys_getegid16 ( )");
+ PRE_REG_READ0(long, "getegid16");
+}
+
+PRE(sys_setreuid16)
+{
+ PRINT("setreuid16 ( 0x%x, 0x%x )", ARG1, ARG2);
+ PRE_REG_READ2(long, "setreuid16", vki_old_uid_t, ruid, vki_old_uid_t, euid);
+}
+
+PRE(sys_setregid16)
+{
+ PRINT("sys_setregid16 ( %d, %d )", ARG1, ARG2);
+ PRE_REG_READ2(long, "setregid16", vki_old_gid_t, rgid, vki_old_gid_t, egid);
+}
+
+PRE(sys_getgroups16)
+{
+ PRINT("sys_getgroups16 ( %d, %p )", ARG1, ARG2);
+ PRE_REG_READ2(long, "getgroups16", int, size, vki_old_gid_t *, list);
+ if (ARG1 > 0)
+ PRE_MEM_WRITE( "getgroups16(list)", ARG2, ARG1 * sizeof(vki_old_gid_t) );
+}
+POST(sys_getgroups16)
+{
+ vg_assert(SUCCESS);
+ if (ARG1 > 0 && RES > 0)
+ POST_MEM_WRITE( ARG2, RES * sizeof(vki_old_gid_t) );
+}
+
+PRE(sys_setgroups16)
+{
+ PRINT("sys_setgroups16 ( %llu, %p )", (ULong)ARG1, ARG2);
+ PRE_REG_READ2(long, "setgroups16", int, size, vki_old_gid_t *, list);
+ if (ARG1 > 0)
+ PRE_MEM_READ( "setgroups16(list)", ARG2, ARG1 * sizeof(vki_old_gid_t) );
+}
+
#undef PRE
#undef POST
GENX_(__NR_getpid, sys_getpid), // 20
//.. LINX_(__NR_mount, sys_mount), // 21
//.. LINX_(__NR_umount, sys_oldumount), // 22
- GENX_(__NR_setuid, sys_setuid16), // 23 ## P
- GENX_(__NR_getuid, sys_getuid16), // 24 ## P
+ LINX_(__NR_setuid, sys_setuid16), // 23 ## P
+ LINX_(__NR_getuid, sys_getuid16), // 24 ## P
//..
//.. // (__NR_stime, sys_stime), // 25 * (SVr4,SVID,X/OPEN)
//.. PLAXY(__NR_ptrace, sys_ptrace), // 26
//.. GENX_(__NR_prof, sys_ni_syscall), // 44
//..
GENX_(__NR_brk, sys_brk), // 45
- GENX_(__NR_setgid, sys_setgid16), // 46
- GENX_(__NR_getgid, sys_getgid16), // 47
+ LINX_(__NR_setgid, sys_setgid16), // 46
+ LINX_(__NR_getgid, sys_getgid16), // 47
//.. // (__NR_signal, sys_signal), // 48 */* (ANSI C)
- GENX_(__NR_geteuid, sys_geteuid16), // 49
+ LINX_(__NR_geteuid, sys_geteuid16), // 49
- GENX_(__NR_getegid, sys_getegid16), // 50
+ LINX_(__NR_getegid, sys_getegid16), // 50
//.. GENX_(__NR_acct, sys_acct), // 51
//.. LINX_(__NR_umount2, sys_umount), // 52
//.. GENX_(__NR_lock, sys_ni_syscall), // 53
//.. // (__NR_sgetmask, sys_sgetmask), // 68 */* (ANSI C)
//.. // (__NR_ssetmask, sys_ssetmask), // 69 */* (ANSI C)
//..
-//.. GENX_(__NR_setreuid, sys_setreuid16), // 70
-//.. GENX_(__NR_setregid, sys_setregid16), // 71
+//.. LINX_(__NR_setreuid, sys_setreuid16), // 70
+//.. LINX_(__NR_setregid, sys_setregid16), // 71
//.. GENX_(__NR_sigsuspend, sys_sigsuspend), // 72
//.. GENXY(__NR_sigpending, sys_sigpending), // 73
//.. // (__NR_sethostname, sys_sethostname), // 74 */*
GENXY(__NR_gettimeofday, sys_gettimeofday), // 78
//.. GENX_(__NR_settimeofday, sys_settimeofday), // 79
//..
- GENXY(__NR_getgroups, sys_getgroups16), // 80
-//.. GENX_(__NR_setgroups, sys_setgroups16), // 81
+ LINXY(__NR_getgroups, sys_getgroups16), // 80
+//.. LINX_(__NR_setgroups, sys_setgroups16), // 81
//.. PLAX_(__NR_select, old_select), // 82
GENX_(__NR_symlink, sys_symlink), // 83
//.. // (__NR_oldlstat, sys_lstat), // 84 -- obsolete
GENX_(__NR_getpid, sys_getpid), // 20
LINX_(__NR_mount, sys_mount), // 21
LINX_(__NR_umount, sys_oldumount), // 22
- GENX_(__NR_setuid, sys_setuid16), // 23 ## P
- GENX_(__NR_getuid, sys_getuid16), // 24 ## P
+ LINX_(__NR_setuid, sys_setuid16), // 23 ## P
+ LINX_(__NR_getuid, sys_getuid16), // 24 ## P
//zz
//zz // (__NR_stime, sys_stime), // 25 * (SVr4,SVID,X/OPEN)
PLAXY(__NR_ptrace, sys_ptrace), // 26
GENX_(__NR_prof, sys_ni_syscall), // 44
//zz
GENX_(__NR_brk, sys_brk), // 45
- GENX_(__NR_setgid, sys_setgid16), // 46
- GENX_(__NR_getgid, sys_getgid16), // 47
+ LINX_(__NR_setgid, sys_setgid16), // 46
+ LINX_(__NR_getgid, sys_getgid16), // 47
//zz // (__NR_signal, sys_signal), // 48 */* (ANSI C)
- GENX_(__NR_geteuid, sys_geteuid16), // 49
+ LINX_(__NR_geteuid, sys_geteuid16), // 49
- GENX_(__NR_getegid, sys_getegid16), // 50
+ LINX_(__NR_getegid, sys_getegid16), // 50
GENX_(__NR_acct, sys_acct), // 51
LINX_(__NR_umount2, sys_umount), // 52
GENX_(__NR_lock, sys_ni_syscall), // 53
//zz // (__NR_sgetmask, sys_sgetmask), // 68 */* (ANSI C)
//zz // (__NR_ssetmask, sys_ssetmask), // 69 */* (ANSI C)
//zz
- GENX_(__NR_setreuid, sys_setreuid16), // 70
- GENX_(__NR_setregid, sys_setregid16), // 71
+ LINX_(__NR_setreuid, sys_setreuid16), // 70
+ LINX_(__NR_setregid, sys_setregid16), // 71
//zz GENX_(__NR_sigsuspend, sys_sigsuspend), // 72
GENXY(__NR_sigpending, sys_sigpending), // 73
//zz // (__NR_sethostname, sys_sethostname), // 74 */*
GENXY(__NR_gettimeofday, sys_gettimeofday), // 78
GENX_(__NR_settimeofday, sys_settimeofday), // 79
- GENXY(__NR_getgroups, sys_getgroups16), // 80
- GENX_(__NR_setgroups, sys_setgroups16), // 81
+ LINXY(__NR_getgroups, sys_getgroups16), // 80
+ LINX_(__NR_setgroups, sys_setgroups16), // 81
PLAX_(__NR_select, old_select), // 82
GENX_(__NR_symlink, sys_symlink), // 83
//zz // (__NR_oldlstat, sys_lstat), // 84 -- obsolete