summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/syscall/uid.c
diff options
context:
space:
mode:
authorjp151216 <none@none>2008-01-04 13:09:02 -0800
committerjp151216 <none@none>2008-01-04 13:09:02 -0800
commitbda89588bd7667394a834e8a9a34612cce2ae9c3 (patch)
tree1226b1cea0d00fb32b21d27ea65b184516cd8c84 /usr/src/uts/common/syscall/uid.c
parent30ac2e7bcba3a0a4c91d060d5ac3d60cd00f7a3a (diff)
downloadillumos-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.c19
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 {