root is in too many groups

John F Carr jfc at athena.mit.edu
Thu May 9 18:27:29 AEST 1991


This is a bug in the authkern_marhsal() function in the NFS client kernel
code.  The code sends up to NGROUPS (32) groups in the RPC request instead
of 8 (what the protocol allows).  To fix for the PS/2, extract auth_kern.o
from /usr/sys/386/nfslib.a and use /bin/dis to disassemble it.  This block
of code near the beginning of authkern_marshal() has the bug:

%_label_1:
    0x58:  a1 b4 02 00 00            movl     u + 0x2b4, %eax
    0x5d:  05 80 00 00 00            addl     $128, %eax
    0x62:  3b c6                     cmpl     %esi, %eax
    0x64:  72 0c                     jb       %_label_0
    0x66:  83 3e ff                  cmpl     $-1, (%esi)
    0x69:  74 07                     jz       %_label_0
    0x6b:  83 c6 04                  addl     $4, %esi
    0x6e:  8b c6                     movl     %esi, %eax
    0x70:  eb e6                     jmp      %_label_1
%_label_0:

128 is NGROUPS * sizeof (int).  This should be 8 * sizeof (int) = 32.  If
you change the addl instruction, assemble with the change, and put the
modified file back into nfslib.a the group problems should stop.  I'm not
sure how to get dis to produce code that you can reassemble for this object
file; it might be easier to use emacs to patch the binary.

--
    John Carr (jfc at athena.mit.edu)



More information about the Comp.unix.aix mailing list