summaryrefslogtreecommitdiffstats
path: root/sys/netatm/sigpvc
diff options
context:
space:
mode:
authoralfred <alfred@FreeBSD.org>2002-02-05 19:30:30 +0000
committeralfred <alfred@FreeBSD.org>2002-02-05 19:30:30 +0000
commit33d91c2dd3a6841c8dfaa3c863181e4650878dbb (patch)
treeb89c66dc0378771d82472c775eacb8cbac557395 /sys/netatm/sigpvc
parent4b6dfb0371e69053a084f9be4527d00c21ff21b2 (diff)
downloadFreeBSD-src-33d91c2dd3a6841c8dfaa3c863181e4650878dbb.zip
FreeBSD-src-33d91c2dd3a6841c8dfaa3c863181e4650878dbb.tar.gz
Fix the credential handling code.
In NetBSD, Solaris, xprt->xp_p2 pointed directly to the credentials, in FreeBSD xprt->xp_verf.oa_base was a pointer to a struct cmessage, which is defined as follow: struct cmessage { struct cmsghdr cmsg; struct cmsgcred cmcred; }; The credentials were submitted the right way and xprt->xp_p2 pointed to them. But cb_verf.oa_flavor was still empty. There was an assignment missing in svc_recv() in svc_vc.c: msg->rm_call.cb_verf.oa_flavor = AUTH_UNIX; Also + if (addr.ss_family == AF_LOCAL) { + xprt->xp_raddr = *(struct sockaddr_in *)xprt->xp_rtaddr.buf; + xprt->xp_addrlen = sizeof (struct sockaddr_in); + } was missing. But the first seems not to be needed: I guess in rpc.yppasswdd there was a typo: - transp>xp_verf.oa_flavor != AUTH_UNIX) { + rqstp->rq_cred.oa_flavor != AUTH_UNIX) { This little fix does fix the breakage in rpc.yppasswdd :-) + if (msg.msg_controllen == 0 || + (msg.msg_flags & MSG_CTRUNC) != 0) + return (-1); We cannot set the cb_verf.oa_length in svc_recv() of svc_vc.c, the credentials get overwritten then, and that's bad. Submitted by: mbr
Diffstat (limited to 'sys/netatm/sigpvc')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud