diff options
author | Dmitry V. Levin <ldv@altlinux.org> | 2010-12-03 16:54:53 +0000 |
---|---|---|
committer | Dmitry V. Levin <ldv@altlinux.org> | 2010-12-03 17:27:54 +0000 |
commit | 0ddd8addef9e9b0c7af00f70b97b3e464205ad1d (patch) | |
tree | f10e889783db4470b0656679e5f8b61ad1b1e27a /net.c | |
parent | f8e56504749a4a5a79d40d115ae46718b4c949a4 (diff) | |
download | strace-0ddd8addef9e9b0c7af00f70b97b3e464205ad1d.tar.gz strace-0ddd8addef9e9b0c7af00f70b97b3e464205ad1d.tar.bz2 strace-0ddd8addef9e9b0c7af00f70b97b3e464205ad1d.tar.xz |
Decode struct ucred for getsockopt SO_PEERCRED
* net.c (sys_getsockopt): Decode SO_PEERCRED.
Proposed by Arkadiusz MiĆkiewicz <arekm@maven.pl>.
Diffstat (limited to 'net.c')
-rw-r--r-- | net.c | 18 |
1 files changed, 18 insertions, 0 deletions
@@ -1774,6 +1774,24 @@ sys_getsockopt(struct tcb *tcp) } break; #endif +#ifdef SO_PEERCRED + case SO_PEERCRED: + if (len == sizeof (struct ucred)) { + struct ucred uc; + if (umove (tcp, + tcp->u_arg[3], + &uc) < 0) + break; + tprintf("{pid=%ld, uid=%ld, gid=%ld}, " + "[%d]", + (long)uc.pid, + (long)uc.uid, + (long)uc.gid, + len); + return 0; + } + break; +#endif } break; case SOL_PACKET: |