Print this page
13026 SMB and NFS use the global zone's IDMAP when they shouldn't
Change-Id: I3b5f7bc68bb77764aa7cb59a48dd1740a8387ccf
*** 18,28 ****
*
* CDDL HEADER END
*/
/*
* Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
! * Copyright 2018 Nexenta Systems, Inc. All rights reserved.
*/
/*
* SMB server interface to idmap
* (smb_idmap_get..., smb_idmap_batch_...)
--- 18,28 ----
*
* CDDL HEADER END
*/
/*
* Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
! * Copyright 2020 Nexenta by DDN, Inc. All rights reserved.
*/
/*
* SMB server interface to idmap
* (smb_idmap_get..., smb_idmap_batch_...)
*** 81,96 ****
{
smb_idmap_t sim;
switch (idtype) {
case SMB_IDMAP_USER:
! sim.sim_stat = kidmap_getsidbyuid(global_zone, id,
(const char **)&sim.sim_domsid, &sim.sim_rid);
break;
case SMB_IDMAP_GROUP:
! sim.sim_stat = kidmap_getsidbygid(global_zone, id,
(const char **)&sim.sim_domsid, &sim.sim_rid);
break;
case SMB_IDMAP_EVERYONE:
/* Everyone S-1-1-0 */
--- 81,96 ----
{
smb_idmap_t sim;
switch (idtype) {
case SMB_IDMAP_USER:
! sim.sim_stat = kidmap_getsidbyuid(curzone, id,
(const char **)&sim.sim_domsid, &sim.sim_rid);
break;
case SMB_IDMAP_GROUP:
! sim.sim_stat = kidmap_getsidbygid(curzone, id,
(const char **)&sim.sim_domsid, &sim.sim_rid);
break;
case SMB_IDMAP_EVERYONE:
/* Everyone S-1-1-0 */
*** 148,168 ****
sim.sim_domsid = sidstr;
sim.sim_id = id;
switch (*idtype) {
case SMB_IDMAP_USER:
! sim.sim_stat = kidmap_getuidbysid(global_zone, sim.sim_domsid,
sim.sim_rid, sim.sim_id);
break;
case SMB_IDMAP_GROUP:
! sim.sim_stat = kidmap_getgidbysid(global_zone, sim.sim_domsid,
sim.sim_rid, sim.sim_id);
break;
case SMB_IDMAP_UNKNOWN:
! sim.sim_stat = kidmap_getpidbysid(global_zone, sim.sim_domsid,
sim.sim_rid, sim.sim_id, &sim.sim_idtype);
break;
default:
ASSERT(0);
--- 148,168 ----
sim.sim_domsid = sidstr;
sim.sim_id = id;
switch (*idtype) {
case SMB_IDMAP_USER:
! sim.sim_stat = kidmap_getuidbysid(curzone, sim.sim_domsid,
sim.sim_rid, sim.sim_id);
break;
case SMB_IDMAP_GROUP:
! sim.sim_stat = kidmap_getgidbysid(curzone, sim.sim_domsid,
sim.sim_rid, sim.sim_id);
break;
case SMB_IDMAP_UNKNOWN:
! sim.sim_stat = kidmap_getpidbysid(curzone, sim.sim_domsid,
sim.sim_rid, sim.sim_id, &sim.sim_idtype);
break;
default:
ASSERT(0);
*** 184,194 ****
{
ASSERT(sib != NULL);
bzero(sib, sizeof (smb_idmap_batch_t));
! sib->sib_idmaph = kidmap_get_create(global_zone);
sib->sib_flags = flags;
sib->sib_nmap = nmap;
sib->sib_size = nmap * sizeof (smb_idmap_t);
sib->sib_maps = kmem_zalloc(sib->sib_size, KM_SLEEP);
--- 184,194 ----
{
ASSERT(sib != NULL);
bzero(sib, sizeof (smb_idmap_batch_t));
! sib->sib_idmaph = kidmap_get_create(curzone);
sib->sib_flags = flags;
sib->sib_nmap = nmap;
sib->sib_size = nmap * sizeof (smb_idmap_t);
sib->sib_maps = kmem_zalloc(sib->sib_size, KM_SLEEP);