diff options
author | jp151216 <none@none> | 2008-01-04 13:09:02 -0800 |
---|---|---|
committer | jp151216 <none@none> | 2008-01-04 13:09:02 -0800 |
commit | bda89588bd7667394a834e8a9a34612cce2ae9c3 (patch) | |
tree | 1226b1cea0d00fb32b21d27ea65b184516cd8c84 /usr/src/uts/common/syscall/uid.c | |
parent | 30ac2e7bcba3a0a4c91d060d5ac3d60cd00f7a3a (diff) | |
download | illumos-gate-bda89588bd7667394a834e8a9a34612cce2ae9c3.tar.gz |
6552639 Each zone should have it's own idmapd
Diffstat (limited to 'usr/src/uts/common/syscall/uid.c')
-rw-r--r-- | usr/src/uts/common/syscall/uid.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/usr/src/uts/common/syscall/uid.c b/usr/src/uts/common/syscall/uid.c index ef96933ba3..9973b17e43 100644 --- a/usr/src/uts/common/syscall/uid.c +++ b/usr/src/uts/common/syscall/uid.c @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2007 Sun Microsystems, Inc. All rights reserved. + * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -54,12 +54,13 @@ setuid(uid_t uid) uid_t oldruid = uid; zoneid_t zoneid = getzoneid(); ksid_t ksid, *ksp; + zone_t *zone = crgetzone(CRED()); - if (!VALID_UID(uid)) + if (!VALID_UID(uid, zone)) return (set_errno(EINVAL)); if (uid > MAXUID) { - if (ksid_lookupbyuid(uid, &ksid) != 0) + if (ksid_lookupbyuid(zone, uid, &ksid) != 0) return (set_errno(EINVAL)); ksp = &ksid; } else { @@ -173,12 +174,13 @@ seteuid(uid_t uid) int do_nocd = 0; cred_t *cr, *newcr; ksid_t ksid, *ksp; + zone_t *zone = crgetzone(CRED()); - if (!VALID_UID(uid)) + if (!VALID_UID(uid, zone)) return (set_errno(EINVAL)); if (uid > MAXUID) { - if (ksid_lookupbyuid(uid, &ksid) != 0) + if (ksid_lookupbyuid(zone, uid, &ksid) != 0) return (set_errno(EINVAL)); ksp = &ksid; } else { @@ -246,13 +248,14 @@ setreuid(uid_t ruid, uid_t euid) cred_t *cr, *newcr; zoneid_t zoneid = getzoneid(); ksid_t ksid, *ksp; + zone_t *zone = crgetzone(CRED()); - if ((ruid != -1 && !VALID_UID(ruid)) || - (euid != -1 && !VALID_UID(euid))) + if ((ruid != -1 && !VALID_UID(ruid, zone)) || + (euid != -1 && !VALID_UID(euid, zone))) return (set_errno(EINVAL)); if (euid != -1 && euid > MAXUID) { - if (ksid_lookupbyuid(euid, &ksid) != 0) + if (ksid_lookupbyuid(zone, euid, &ksid) != 0) return (set_errno(EINVAL)); ksp = &ksid; } else { |