diff options
author | Michael I. Bushnell <mib@gnu.org> | 1996-02-13 18:11:53 +0000 |
---|---|---|
committer | Michael I. Bushnell <mib@gnu.org> | 1996-02-13 18:11:53 +0000 |
commit | 59ea7096f44380a1956aa2d8726a00e16f1bdb66 (patch) | |
tree | ae2553634f1b83e9e36ba8fa024f1b759035ca69 /nfs | |
parent | dbedbd2e20b3f8c1b143663e79988f3806a6bc07 (diff) |
Formerly nfs.c.~12~
Diffstat (limited to 'nfs')
-rw-r--r-- | nfs/nfs.c | 44 |
1 files changed, 31 insertions, 13 deletions
@@ -1,5 +1,5 @@ /* - Copyright (C) 1995 Free Software Foundation, Inc. + Copyright (C) 1995, 1996 Free Software Foundation, Inc. Written by Michael I. Bushnell, p/BSG. This file is part of the GNU Hurd. @@ -234,20 +234,23 @@ nfs_initialize_rpc (int rpc_proc, struct netcred *cred, { uid_t uid; uid_t gid; + error_t err; if (cred == (struct netcred *) -1) { uid = gid = 0; - second_gid = -2; + second_gid = -1; } else if (cred && (cred->nuids || cred->ngids)) { if (cred_has_uid (cred, 0)) { - netfs_validate_stat (np, 0); + err = netfs_validate_stat (np, 0); uid = 0; - gid = np->nn_stat.st_gid; + gid = err ? -2 : 0; + if (err) + printf ("NFS warning, internal stat failure\n"); } else { @@ -257,11 +260,19 @@ nfs_initialize_rpc (int rpc_proc, struct netcred *cred, uid = cred->uids[0]; else { - netfs_validate_stat (np, 0); - if (cred_has_uid (cred, np->nn_stat.st_uid)) - uid = np->nn_stat.st_uid; + err = netfs_validate_stat (np, 0); + if (err) + { + uid = cred->uids[0]; + printf ("NFS warning, internal stat failure\n"); + } else - uid = cred->uids[0]; + { + if (cred_has_uid (cred, np->nn_stat.st_uid)) + uid = np->nn_stat.st_uid; + else + uid = cred->uids[0]; + } } if (cred->ngids == 0) @@ -276,12 +287,19 @@ nfs_initialize_rpc (int rpc_proc, struct netcred *cred, } else { - netfs_validate_stat (np, 0); - if (cred_has_gid (cred, np->nn_stat.st_gid)) - gid = np->nn_stat.st_gid; + err = netfs_validate_stat (np, 0); + if (err) + { + gid = cred->gids[0]; + printf ("NFS warning, internal stat failure\n"); + } else - gid = cred->gids[0]; - + { + if (cred_has_gid (cred, np->nn_stat.st_gid)) + gid = np->nn_stat.st_gid; + else + gid = cred->gids[0]; + } if (second_gid != -1 && !cred_has_gid (cred, second_gid)) second_gid = -1; |