#include "defs.h" #include int sys_getuid(struct tcb *tcp) { if (exiting(tcp)) tcp->u_rval = (uid_t) tcp->u_rval; return RVAL_UDECIMAL; } int sys_setfsuid(struct tcb *tcp) { if (entering(tcp)) tprintf("%u", (uid_t) tcp->u_arg[0]); else tcp->u_rval = (uid_t) tcp->u_rval; return RVAL_UDECIMAL; } int sys_setuid(struct tcb *tcp) { if (entering(tcp)) { tprintf("%u", (uid_t) tcp->u_arg[0]); } return 0; } int sys_getresuid(struct tcb *tcp) { if (exiting(tcp)) { __kernel_uid_t uid; if (syserror(tcp)) tprintf("%#lx, %#lx, %#lx", tcp->u_arg[0], tcp->u_arg[1], tcp->u_arg[2]); else { if (umove(tcp, tcp->u_arg[0], &uid) < 0) tprintf("%#lx, ", tcp->u_arg[0]); else tprintf("[%lu], ", (unsigned long) uid); if (umove(tcp, tcp->u_arg[1], &uid) < 0) tprintf("%#lx, ", tcp->u_arg[1]); else tprintf("[%lu], ", (unsigned long) uid); if (umove(tcp, tcp->u_arg[2], &uid) < 0) tprintf("%#lx", tcp->u_arg[2]); else tprintf("[%lu]", (unsigned long) uid); } } return 0; } int sys_setreuid(struct tcb *tcp) { if (entering(tcp)) { printuid("", tcp->u_arg[0]); printuid(", ", tcp->u_arg[1]); } return 0; } int sys_setresuid(struct tcb *tcp) { if (entering(tcp)) { printuid("", tcp->u_arg[0]); printuid(", ", tcp->u_arg[1]); printuid(", ", tcp->u_arg[2]); } return 0; } void printuid(const char *text, const unsigned int uid) { if ((unsigned int) -1 == uid) tprintf("%s-1", text); else tprintf("%s%u", text, uid); }