mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-26 03:09:34 +03:00
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.
This commit is contained in:
parent
9b0c3b2aa8
commit
734fcac78d
@ -50,9 +50,11 @@ extern void crfree(cred_t *cr);
|
|||||||
extern uid_t crgetuid(const cred_t *cr);
|
extern uid_t crgetuid(const cred_t *cr);
|
||||||
extern uid_t crgetruid(const cred_t *cr);
|
extern uid_t crgetruid(const cred_t *cr);
|
||||||
extern uid_t crgetsuid(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 crgetgid(const cred_t *cr);
|
||||||
extern gid_t crgetrgid(const cred_t *cr);
|
extern gid_t crgetrgid(const cred_t *cr);
|
||||||
extern gid_t crgetsgid(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 int crgetngroups(const cred_t *cr);
|
||||||
extern gid_t * crgetgroups(const cred_t *cr);
|
extern gid_t * crgetgroups(const cred_t *cr);
|
||||||
extern int groupmember(gid_t gid, const cred_t *cr);
|
extern int groupmember(gid_t gid, const cred_t *cr);
|
||||||
|
@ -84,48 +84,6 @@ crfree(cred_t *cr)
|
|||||||
put_cred((const 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 */
|
/* Return the number of supplemental groups */
|
||||||
int
|
int
|
||||||
crgetngroups(const cred_t *cr)
|
crgetngroups(const cred_t *cr)
|
||||||
@ -186,42 +144,6 @@ void crhold(cred_t *cr) { }
|
|||||||
/* Free a reference on the credential and group info */
|
/* Free a reference on the credential and group info */
|
||||||
void crfree(cred_t *cr) { }
|
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 */
|
/* Return the number of supplemental groups */
|
||||||
int
|
int
|
||||||
crgetngroups(const cred_t *cr)
|
crgetngroups(const cred_t *cr)
|
||||||
@ -289,14 +211,72 @@ groupmember(gid_t gid, const cred_t *cr)
|
|||||||
|
|
||||||
#endif /* HAVE_CRED_STRUCT */
|
#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(crhold);
|
||||||
EXPORT_SYMBOL(crfree);
|
EXPORT_SYMBOL(crfree);
|
||||||
EXPORT_SYMBOL(crgetuid);
|
EXPORT_SYMBOL(crgetuid);
|
||||||
EXPORT_SYMBOL(crgetruid);
|
EXPORT_SYMBOL(crgetruid);
|
||||||
EXPORT_SYMBOL(crgetsuid);
|
EXPORT_SYMBOL(crgetsuid);
|
||||||
|
EXPORT_SYMBOL(crgetfsuid);
|
||||||
EXPORT_SYMBOL(crgetgid);
|
EXPORT_SYMBOL(crgetgid);
|
||||||
EXPORT_SYMBOL(crgetrgid);
|
EXPORT_SYMBOL(crgetrgid);
|
||||||
EXPORT_SYMBOL(crgetsgid);
|
EXPORT_SYMBOL(crgetsgid);
|
||||||
|
EXPORT_SYMBOL(crgetfsgid);
|
||||||
EXPORT_SYMBOL(crgetngroups);
|
EXPORT_SYMBOL(crgetngroups);
|
||||||
EXPORT_SYMBOL(crgetgroups);
|
EXPORT_SYMBOL(crgetgroups);
|
||||||
EXPORT_SYMBOL(groupmember);
|
EXPORT_SYMBOL(groupmember);
|
||||||
|
Loading…
Reference in New Issue
Block a user