]> granicus.if.org Git - strace/commitdiff
Decode struct ucred for getsockopt SO_PEERCRED
authorDmitry V. Levin <ldv@altlinux.org>
Fri, 3 Dec 2010 16:54:53 +0000 (16:54 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Fri, 3 Dec 2010 17:27:54 +0000 (17:27 +0000)
* net.c (sys_getsockopt): Decode SO_PEERCRED.
Proposed by Arkadiusz Miƛkiewicz <arekm@maven.pl>.

net.c

diff --git a/net.c b/net.c
index f56664e13c8ec25ed9bbbd1c8feba08939c5e720..72e10f1114c891c19244f90eb4bc947bf9bdacfc 100644 (file)
--- a/net.c
+++ b/net.c
@@ -1773,6 +1773,24 @@ sys_getsockopt(struct tcb *tcp)
                                        return 0;
                                }
                                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;