--- linux-user/syscall.c 2005-04-20 10:49:39.388477429 +0300 +++ linux-user/syscall.c 2005-04-20 10:11:13.000000000 +0300 @@ -633,10 +630,21 @@ case SO_LINGER: case SO_RCVTIMEO: case SO_SNDTIMEO: - case SO_PEERCRED: case SO_PEERNAME: /* These don't just return a single integer */ - goto unimplemented; + if (get_user(len, optlen)) + return -EFAULT; + if (len < 0) + return -EINVAL; + ret = get_errno(getsockopt(sockfd, level, optname, optval, &len)); + if (put_user(len, optlen)) + return -EFAULT; + break; + + case SO_PEERCRED: + ret = get_errno(getsockopt(sockfd, level, optname, optval, optlen)); + break; + default: if (get_user(len, optlen)) return -EFAULT;