From: Dmitry V. Levin Date: Thu, 16 Jul 2015 00:01:25 +0000 (+0000) Subject: uid.c: make use of RVAL_DECODED X-Git-Tag: v4.11~447 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=14278620c9241e3dcd0f8f24ec704d6d12e7a85a;p=strace uid.c: make use of RVAL_DECODED * uid.c (sys_setuid, sys_setreuid, sys_setresuid, sys_chown, sys_fchown, sys_setgroups): Update for RVAL_DECODED. --- diff --git a/uid.c b/uid.c index 52f4f2e8..30244abe 100644 --- a/uid.c +++ b/uid.c @@ -55,10 +55,9 @@ SYS_FUNC(setfsuid) SYS_FUNC(setuid) { - if (entering(tcp)) { - tprintf("%u", (uid_t) tcp->u_arg[0]); - } - return 0; + printuid("", tcp->u_arg[0]); + + return RVAL_DECODED; } static void @@ -85,41 +84,37 @@ SYS_FUNC(getresuid) SYS_FUNC(setreuid) { - if (entering(tcp)) { - printuid("", tcp->u_arg[0]); - printuid(", ", tcp->u_arg[1]); - } - return 0; + printuid("", tcp->u_arg[0]); + printuid(", ", tcp->u_arg[1]); + + return RVAL_DECODED; } SYS_FUNC(setresuid) { - if (entering(tcp)) { - printuid("", tcp->u_arg[0]); - printuid(", ", tcp->u_arg[1]); - printuid(", ", tcp->u_arg[2]); - } - return 0; + printuid("", tcp->u_arg[0]); + printuid(", ", tcp->u_arg[1]); + printuid(", ", tcp->u_arg[2]); + + return RVAL_DECODED; } SYS_FUNC(chown) { - if (entering(tcp)) { - printpath(tcp, tcp->u_arg[0]); - printuid(", ", tcp->u_arg[1]); - printuid(", ", tcp->u_arg[2]); - } - return 0; + printpath(tcp, tcp->u_arg[0]); + printuid(", ", tcp->u_arg[1]); + printuid(", ", tcp->u_arg[2]); + + return RVAL_DECODED; } SYS_FUNC(fchown) { - if (entering(tcp)) { - printfd(tcp, tcp->u_arg[0]); - printuid(", ", tcp->u_arg[1]); - printuid(", ", tcp->u_arg[2]); - } - return 0; + printfd(tcp, tcp->u_arg[0]); + printuid(", ", tcp->u_arg[1]); + printuid(", ", tcp->u_arg[2]); + + return RVAL_DECODED; } void @@ -133,54 +128,53 @@ printuid(const char *text, const unsigned int uid) SYS_FUNC(setgroups) { - if (entering(tcp)) { - unsigned long cur, abbrev_end; - uid_t gid; - int failed = 0; - const unsigned long len = tcp->u_arg[0]; - const unsigned long start = tcp->u_arg[1]; - const unsigned long size = len * sizeof(gid); - const unsigned long end = start + size; - - tprintf("%lu, ", len); - if (len == 0) { - tprints("[]"); - return 0; - } - if (!start || !verbose(tcp) || - size / sizeof(gid) != len || end < start) { - printaddr(start); - return 0; - } - if (abbrev(tcp)) { - abbrev_end = start + max_strlen * sizeof(gid); - if (abbrev_end < start) - abbrev_end = end; - } else { + unsigned long cur, abbrev_end; + uid_t gid; + int failed = 0; + const unsigned long len = tcp->u_arg[0]; + const unsigned long start = tcp->u_arg[1]; + const unsigned long size = len * sizeof(gid); + const unsigned long end = start + size; + + tprintf("%lu, ", len); + if (len == 0) { + tprints("[]"); + return RVAL_DECODED; + } + if (!start || !verbose(tcp) || + size / sizeof(gid) != len || end < start) { + printaddr(start); + return RVAL_DECODED; + } + if (abbrev(tcp)) { + abbrev_end = start + max_strlen * sizeof(gid); + if (abbrev_end < start) abbrev_end = end; + } else { + abbrev_end = end; + } + tprints("["); + for (cur = start; cur < end; cur += sizeof(gid)) { + if (cur > start) + tprints(", "); + if (cur >= abbrev_end) { + tprints("..."); + break; } - tprints("["); - for (cur = start; cur < end; cur += sizeof(gid)) { - if (cur > start) - tprints(", "); - if (cur >= abbrev_end) { - tprints("..."); - break; - } - if (umoven(tcp, cur, sizeof(gid), &gid) < 0) { - tprints("?"); - failed = 1; - break; - } - tprintf("%u", (unsigned int) gid); - } - tprints("]"); - if (failed) { - tprints(" "); - printaddr(start); + if (umoven(tcp, cur, sizeof(gid), &gid) < 0) { + tprints("?"); + failed = 1; + break; } + tprintf("%u", (unsigned int) gid); } - return 0; + tprints("]"); + if (failed) { + tprints(" "); + printaddr(start); + } + + return RVAL_DECODED; } SYS_FUNC(getgroups)