Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 15 Nov 1996 23:27:43 +0800
From:      Peter Wemm <peter@spinner.DIALix.COM>
To:        wpaul@freebsd.org
Cc:        bugs@freebsd.org
Subject:   Re: aieee!! nis gone to hell in 2.2... :-/ 
Message-ID:  <199611151527.XAA09828@spinner.DIALix.COM>
In-Reply-To: Your message of "Fri, 15 Nov 1996 22:01:26 %2B0800." <199611151401.WAA09204@spinner.DIALix.COM> 

next in thread | previous in thread | raw e-mail | index | archive | help

Peter Wemm wrote:
> Has anybody else seen this?
> 
> -Peter

This is getting more wierd by the minute..

I checked what chpass was feeding into the xdr routines for passage to 
rpc.yppasswdd, and it almost appears to be getting corrupted in transit...

ie: this change to pw_yp.c
        if (suser_override) {
                /* Talk to server via AF_UNIX socket. */
+               warnx("send pw_shell: '%s'", master_yppasswd.newpw.pw_shell
);
                if (senddat(&master_yppasswd)) {
                        warnx("failed to contact local rpc.yppasswdd");

gives this debug:
Changing NIS information for ophidian on localhost
chpass: send pw_shell: '/usr/local/bin/bash'

And yet, on the recieving end, do_master calls getdat(), and passes that 
directly to update_master().  At the top of update_master():

yp_error("got pw_dir: '%s'", argp->newpw.pw_dir);
yp_error("got pw_shell: '%s'", argp->newpw.pw_shell);
yp_error("got pw_expire: %ld", argp->newpw.pw_expire);

causes the following debug output:
Nov 15 22:52:12 newton rpc.yppasswdd[23684]: got pw_dir: '/home/o/ophidian'
Nov 15 22:52:12 newton rpc.yppasswdd[23684]: got pw_shell: 
'/usr/local/bin/bash@^F^H^A'
Nov 15 22:52:12 newton rpc.yppasswdd[23684]: got pw_expire: 849715199

ie: somehow, the "XDR counted string" kinda "grew" a bit during a couple 
of function calls, xdr encoding, passing though an AF_UNIX socket/pipe, 
xdr decoding and a few more function calls... :-(

The silly part is that I'm not even trying to change the shell, just the 
gecos username..

I'm still no closer to figuring out WTF is happening here, and why it only 
seems to be for this one user.  At least the accept() hang is gone..  I'm 
confused enough now to ktrace both client and server now to try and see 
the data stream being sent and recieved to see for sure where it's 
breaking.

Cheers,
-Peter





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199611151527.XAA09828>