Apply patch from kern/5538:
Fix group mapping so members of group 0 get other group-ids mapped as well. Avoid rename panic by checking (*this_vp_p) against NULLVP before dereferencing it (same change as to NULLFS some time ago).
This commit is contained in:
parent
be73d82871
commit
247156f4d2
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: umap_subr.c,v 1.13 1998/03/01 02:21:51 fvdl Exp $ */
|
||||
/* $NetBSD: umap_subr.c,v 1.14 1999/03/19 21:46:25 perseant Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1992, 1993, 1995
|
||||
|
@ -441,14 +441,13 @@ umap_mapids(v_mount, credp)
|
|||
/* Now we must map each of the set of groups in the cr_groups
|
||||
structure. */
|
||||
|
||||
i = 0;
|
||||
while (credp->cr_groups[i] != 0) {
|
||||
for(i=0; i < credp->cr_ngroups; i++) {
|
||||
gid = (gid_t) umap_findid(credp->cr_groups[i],
|
||||
groupmap, gnentries);
|
||||
|
||||
if (gid != -1)
|
||||
credp->cr_groups[i++] = gid;
|
||||
credp->cr_groups[i] = gid;
|
||||
else
|
||||
credp->cr_groups[i++] = NULLGROUP;
|
||||
credp->cr_groups[i] = NULLGROUP;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: umap_vfsops.c,v 1.21 1999/03/12 18:16:44 bouyer Exp $ */
|
||||
/* $NetBSD: umap_vfsops.c,v 1.22 1999/03/19 21:46:26 perseant Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1992, 1993
|
||||
|
@ -89,6 +89,9 @@ umapfs_mount(mp, path, data, ndp, p)
|
|||
struct umap_mount *amp;
|
||||
size_t size;
|
||||
int error;
|
||||
#ifdef UMAPFS_DIAGNOSTIC
|
||||
int i;
|
||||
#endif
|
||||
|
||||
/* only for root */
|
||||
if ((error = suser(p->p_ucred, &p->p_acflag)) != 0)
|
||||
|
@ -158,10 +161,10 @@ umapfs_mount(mp, path, data, ndp, p)
|
|||
if (error)
|
||||
return (error);
|
||||
|
||||
#ifdef UMAP_DIAGNOSTIC
|
||||
#ifdef UMAPFS_DIAGNOSTIC
|
||||
printf("umap_mount:nentries %d\n",args.nentries);
|
||||
for (i = 0; i < args.nentries; i++)
|
||||
printf(" %d maps to %d\n", amp->info_mapdata[i][0],
|
||||
printf(" %ld maps to %ld\n", amp->info_mapdata[i][0],
|
||||
amp->info_mapdata[i][1]);
|
||||
#endif
|
||||
|
||||
|
@ -170,10 +173,10 @@ umapfs_mount(mp, path, data, ndp, p)
|
|||
if (error)
|
||||
return (error);
|
||||
|
||||
#ifdef UMAP_DIAGNOSTIC
|
||||
#ifdef UMAPFS_DIAGNOSTIC
|
||||
printf("umap_mount:gnentries %d\n",args.gnentries);
|
||||
for (i = 0; i < args.gnentries; i++)
|
||||
printf("\tgroup %d maps to %d\n",
|
||||
printf("\tgroup %ld maps to %ld\n",
|
||||
amp->info_gmapdata[i][0],
|
||||
amp->info_gmapdata[i][1]);
|
||||
#endif
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: umap_vnops.c,v 1.10 1998/03/01 02:21:51 fvdl Exp $ */
|
||||
/* $NetBSD: umap_vnops.c,v 1.11 1999/03/19 21:46:26 perseant Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1992, 1993
|
||||
|
@ -157,7 +157,7 @@ umap_bypass(v)
|
|||
* that aren't. (Must map first vp or vclean fails.)
|
||||
*/
|
||||
|
||||
if (i && (*this_vp_p)->v_op != umap_vnodeop_p) {
|
||||
if (i && ((*this_vp_p)==NULL || (*this_vp_p)->v_op != umap_vnodeop_p)) {
|
||||
old_vps[i] = NULL;
|
||||
} else {
|
||||
old_vps[i] = *this_vp_p;
|
||||
|
|
Loading…
Reference in New Issue