From f1e62b7bb2e67bd0cb2464d7225214242b717ac0 Mon Sep 17 00:00:00 2001 From: "Michael I. Bushnell" Date: Fri, 19 Jul 1996 04:48:41 +0000 Subject: *** empty log message *** --- auth/ChangeLog | 8 +++++++- auth/auth.c | 11 ++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) (limited to 'auth') diff --git a/auth/ChangeLog b/auth/ChangeLog index 3effd418..2f82a470 100644 --- a/auth/ChangeLog +++ b/auth/ChangeLog @@ -1,10 +1,16 @@ +Fri Jul 19 00:35:46 1996 Michael I. Bushnell, p/BSG + + * auth.c (S_auth_makeauth): Deallocate initial reference to + NEWAUTH after *NEWHANDLE has been set. + Thu Jul 18 19:31:53 1996 Michael I. Bushnell, p/BSG * auth.c (S_auth_makeauth): It's fine if a passed in auth port is not one we know about; just make the loops across AUTHS deal properly with null values. Only deallocate the AUTHPTS passed in if we don't encounter any errors. Always deallocate the - references in the AUTHS array. + references in the AUTHS array. ISUID and GROUPMEMBER functions + should check both effective and auxiliary members of AUTH. (struct pending): Delete member `passthrough_type'. (S_auth_user_authenticate): Always use MOVE_SEND to send pass through port back to user. diff --git a/auth/auth.c b/auth/auth.c index ebef00b4..d77c484e 100644 --- a/auth/auth.c +++ b/auth/auth.c @@ -143,8 +143,12 @@ S_auth_makeauth (struct authhandle *auth, /* Verify that the union of the handles passed in either contains euid 0 (root), or contains all the requested ids. */ -#define isuid(uid, auth) idvec_contains (&(auth)->euids, uid) -#define groupmember(gid, auth) idvec_contains (&(auth)->egids, gid) +#define isuid(uid, auth) \ + (idvec_contains (&(auth)->euids, uid) \ + || idvec_contains (&(auth)->auids, uid)) +#define groupmember(gid, auth) \ + (idvec_contains (&(auth)->egids, gid) \ + || idvec_contains (&(auth)->agids, gid)) #define isroot(auth) isuid (0, auth) for (i = 0; i < nauths; i++) @@ -225,8 +229,9 @@ S_auth_makeauth (struct authhandle *auth, if (! err) { for (j = 1; j < nauths; ++j) - mach_port_deallocate (mach_task_self (), authpts[j]); + mach_port_deallocate (mach_task_self (), authpts[j - 1]); *newhandle = ports_get_right (newauth); + ports_port_deref (newauth); } for (j = 1; j < nauths; j++) -- cgit v1.2.3