diff options
| author | Dima Dorfman <dd@FreeBSD.org> | 2002-02-27 04:45:37 +0000 |
|---|---|---|
| committer | Dima Dorfman <dd@FreeBSD.org> | 2002-02-27 04:45:37 +0000 |
| commit | 76183f345377df655cfb357a53d52aa045fa8073 (patch) | |
| tree | b9bd8d438620748c0c88ed7a994eb55f8d617278 /lib/libc | |
| parent | b7eeb587f6c0aa1aa84ed6cca74ad7ec43ed8019 (diff) | |
Notes
Diffstat (limited to 'lib/libc')
| -rw-r--r-- | lib/libc/gen/getpeereid.3 | 3 | ||||
| -rw-r--r-- | lib/libc/gen/getpeereid.c | 3 |
2 files changed, 5 insertions, 1 deletions
diff --git a/lib/libc/gen/getpeereid.3 b/lib/libc/gen/getpeereid.3 index 94ed61efd099..e124d0a9be9b 100644 --- a/lib/libc/gen/getpeereid.3 +++ b/lib/libc/gen/getpeereid.3 @@ -118,7 +118,8 @@ have been called. The argument .Fa s does not refer to a socket of type -.Dv SOCK_STREAM . +.Dv SOCK_STREAM , +or the kernel returned invalid data. .El .Sh SEE ALSO .Xr connect 2 , diff --git a/lib/libc/gen/getpeereid.c b/lib/libc/gen/getpeereid.c index 7d0c5775e335..b64ff5497053 100644 --- a/lib/libc/gen/getpeereid.c +++ b/lib/libc/gen/getpeereid.c @@ -32,6 +32,7 @@ __FBSDID("$FreeBSD$"); #include <sys/ucred.h> #include <sys/un.h> +#include <errno.h> #include <unistd.h> int @@ -45,6 +46,8 @@ getpeereid(int s, uid_t *euid, gid_t *egid) error = getsockopt(s, LOCAL_PEERCRED, 1, &xuc, &xuclen); if (error != 0) return (error); + if (xuc.cr_version != XUCRED_VERSION) + return (EINVAL); *euid = xuc.cr_uid; *egid = xuc.cr_gid; return (0); |
