[Bug 248614] getpeereid.3 says listen where it means accept.

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Wed Aug 12 09:06:55 UTC 2020


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=248614

            Bug ID: 248614
           Summary: getpeereid.3 says listen where it means accept.
           Product: Documentation
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: Manual Pages
          Assignee: bugs at FreeBSD.org
          Reporter: gnachman at gmail.com
                CC: doc at FreeBSD.org

Created attachment 217167
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=217167&action=edit
Client and server that demonstrate the actual behavior of getpeereid

The manpage for `getpeereid` states:

> The argument s must be a UNIX-domain socket (unix(4)) of type SOCK_STREAM on which either connect(2) or listen(2) have been called.

This is surprising! Why would you be able to get the effective user ID of the
peer on the socket for which *listen* has been called? There isn't a peer until
you `accept`.

Using the attached server and client programs, it looks like my intuition is
correct:

$ ./server
status=-1 eid=0 errno=57
status=0 eid=1001 errno=57

`getpeereid` requires s to be the socket that has been returned by `accept()`,
not the one that was `listen()`ed on.

I think the language should be changed to:

> The argument s must be a UNIX-domain socket (unix(4)) of type SOCK_STREAM on which connect(2) has been called or was returned by accept(2) or accept4(2).

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the freebsd-doc mailing list