diff options
author | Brian Behlendorf <[email protected]> | 2011-03-22 11:18:15 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2011-03-22 12:18:44 -0700 |
commit | 734fcac78d8c430aeb3731590b77dfcfa6de224f (patch) | |
tree | 76cde119b52cb4c9eee1bcb9dfac669199320d13 | |
parent | 9b0c3b2aa87610690cf6e1a792ff1484274a392d (diff) |
Add crgetfsuid()/crgetfsgid() helpers
Solaris credentials don't have an fsuid/fsguid field but Linux
credentials do. To handle this case the Solaris API is being
modestly extended to include the crgetfsuid()/crgetfsgid()
helper functions.
Addititionally, because the crget*() helpers are implemented
identically regardless of HAVE_CRED_STRUCT they have been
moved outside the #ifdef to common code. This simplification
means we only have one version of the helper to keep to to date.
-rw-r--r-- | include/sys/cred.h | 2 | ||||
-rw-r--r-- | module/spl/spl-cred.c | 136 |
2 files changed, 60 insertions, 78 deletions
diff --git a/include/sys/cred.h b/include/sys/cred.h index 6f4cde73c..778d05255 100644 --- a/include/sys/cred.h +++ b/include/sys/cred.h @@ -50,9 +50,11 @@ extern void crfree(cred_t *cr); extern uid_t crgetuid(const cred_t *cr); extern uid_t crgetruid(const cred_t *cr); extern uid_t crgetsuid(const cred_t *cr); +extern uid_t crgetfsuid(const cred_t *cr); extern gid_t crgetgid(const cred_t *cr); extern gid_t crgetrgid(const cred_t *cr); extern gid_t crgetsgid(const cred_t *cr); +extern gid_t crgetfsgid(const cred_t *cr); extern int crgetngroups(const cred_t *cr); extern gid_t * crgetgroups(const cred_t *cr); extern int groupmember(gid_t gid, const cred_t *cr); diff --git a/module/spl/spl-cred.c b/module/spl/spl-cred.c index dd5d9da01..ce3425d32 100644 --- a/module/spl/spl-cred.c +++ b/module/spl/spl-cred.c @@ -84,48 +84,6 @@ crfree(cred_t *cr) put_cred((const cred_t *)cr); } -/* Return the effective user id */ -uid_t -crgetuid(const cred_t *cr) -{ - return cr->euid; -} - -/* Return the real user id */ -uid_t -crgetruid(const cred_t *cr) -{ - return cr->uid; -} - -/* Return the saved user id */ -uid_t -crgetsuid(const cred_t *cr) -{ - return cr->suid; -} - -/* Return the effective group id */ -gid_t -crgetgid(const cred_t *cr) -{ - return cr->egid; -} - -/* Return the real group id */ -gid_t -crgetrgid(const cred_t *cr) -{ - return cr->gid; -} - -/* Return the saved group id */ -gid_t -crgetsgid(const cred_t *cr) -{ - return cr->sgid; -} - /* Return the number of supplemental groups */ int crgetngroups(const cred_t *cr) @@ -186,42 +144,6 @@ void crhold(cred_t *cr) { } /* Free a reference on the credential and group info */ void crfree(cred_t *cr) { } -/* Return the effective user id */ -uid_t -crgetuid(const cred_t *cr) { - return cr->euid; -} - -/* Return the effective real id */ -uid_t -crgetruid(const cred_t *cr) { - return cr->uid; -} - -/* Return the effective saved id */ -uid_t -crgetsuid(const cred_t *cr) { - return cr->suid; -} - -/* Return the effective group id */ -gid_t -crgetgid(const cred_t *cr) { - return cr->egid; -} - -/* Return the real group id */ -gid_t -crgetrgid(const cred_t *cr) { - return cr->gid; -} - -/* Return the saved group id */ -gid_t -crgetsgid(const cred_t *cr) { - return cr->sgid; -} - /* Return the number of supplemental groups */ int crgetngroups(const cred_t *cr) @@ -289,14 +211,72 @@ groupmember(gid_t gid, const cred_t *cr) #endif /* HAVE_CRED_STRUCT */ +/* Return the effective user id */ +uid_t +crgetuid(const cred_t *cr) +{ + return cr->euid; +} + +/* Return the real user id */ +uid_t +crgetruid(const cred_t *cr) +{ + return cr->uid; +} + +/* Return the saved user id */ +uid_t +crgetsuid(const cred_t *cr) +{ + return cr->suid; +} + +/* Return the filesystem user id */ +uid_t +crgetfsuid(const cred_t *cr) +{ + return cr->fsuid; +} + +/* Return the effective group id */ +gid_t +crgetgid(const cred_t *cr) +{ + return cr->egid; +} + +/* Return the real group id */ +gid_t +crgetrgid(const cred_t *cr) +{ + return cr->gid; +} + +/* Return the saved group id */ +gid_t +crgetsgid(const cred_t *cr) +{ + return cr->sgid; +} + +/* Return the filesystem group id */ +gid_t +crgetfsgid(const cred_t *cr) +{ + return cr->fsgid; +} + EXPORT_SYMBOL(crhold); EXPORT_SYMBOL(crfree); EXPORT_SYMBOL(crgetuid); EXPORT_SYMBOL(crgetruid); EXPORT_SYMBOL(crgetsuid); +EXPORT_SYMBOL(crgetfsuid); EXPORT_SYMBOL(crgetgid); EXPORT_SYMBOL(crgetrgid); EXPORT_SYMBOL(crgetsgid); +EXPORT_SYMBOL(crgetfsgid); EXPORT_SYMBOL(crgetngroups); EXPORT_SYMBOL(crgetgroups); EXPORT_SYMBOL(groupmember); |