I've got a patch against the Secure RPC code which replaces an apparently bogus use of NGROUPS and fixes a bug where the internal identify cache stores uid_t and gid_t data in shorts. It's trivial and it looks like all the surrounding uses do use the correct size and just discard data when passing it through the cache, but I don't have an easy way to test it. Does anyone else?
-- Brooks Index: lib/libc/rpc/svc_auth_des.c =================================================================== --- lib/libc/rpc/svc_auth_des.c (revision 201441) +++ lib/libc/rpc/svc_auth_des.c (working copy) @@ -449,10 +449,10 @@ #define INVALID -1 /* grouplen, if cache entry is invalid */ struct bsdcred { - short uid; /* cached uid */ - short gid; /* cached gid */ - short grouplen; /* length of cached groups */ - short groups[NGROUPS]; /* cached groups */ + uid_t uid; /* cached uid */ + gid_t gid; /* cached gid */ + int grouplen; /* length of cached groups */ + gid_t groups[NGRPS]; /* cached groups */ }; /*
pgpULpECiRFud.pgp
Description: PGP signature