From: Dmitry V. Levin Date: Sun, 27 Dec 2015 00:18:03 +0000 (+0000) Subject: Do not truncate return value of get{,e}[ug]id and setfs[ug]id syscalls X-Git-Tag: v4.12~787 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=abfa939f57247c9eaa1e8ab2f110495819a51617;p=strace Do not truncate return value of get{,e}[ug]id and setfs[ug]id syscalls This should not be a user visible change unless the kernel does something completely unexpected. In the latter case, let user see what is going on. * uid.c (SYS_FUNC(getuid), SYS_FUNC(setfsuid)): Do not truncate tcp->u_rval to uid_t on exiting syscall, return RVAL_DECODED. --- diff --git a/uid.c b/uid.c index ef55070e..c8723924 100644 --- a/uid.c +++ b/uid.c @@ -70,18 +70,15 @@ SYS_FUNC(getuid) { - if (exiting(tcp)) - tcp->u_rval = (uid_t) tcp->u_rval; - return RVAL_UDECIMAL; + return RVAL_UDECIMAL | RVAL_DECODED; } SYS_FUNC(setfsuid) { if (entering(tcp)) tprintf("%u", (uid_t) tcp->u_arg[0]); - else - tcp->u_rval = (uid_t) tcp->u_rval; - return RVAL_UDECIMAL; + + return RVAL_UDECIMAL | RVAL_DECODED; } SYS_FUNC(setuid)