summaryrefslogtreecommitdiff
path: root/net.c
diff options
context:
space:
mode:
authorDmitry V. Levin <ldv@altlinux.org>2010-12-03 16:54:53 +0000
committerDmitry V. Levin <ldv@altlinux.org>2010-12-03 17:27:54 +0000
commit0ddd8addef9e9b0c7af00f70b97b3e464205ad1d (patch)
treef10e889783db4470b0656679e5f8b61ad1b1e27a /net.c
parentf8e56504749a4a5a79d40d115ae46718b4c949a4 (diff)
downloadstrace-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.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/net.c b/net.c
index f56664e..72e10f1 100644
--- a/net.c
+++ b/net.c
@@ -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: