diff options
author | Chunwei Chen <[email protected]> | 2016-10-18 17:29:26 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2016-10-20 09:33:22 -0700 |
commit | 87063d7dc392cb710c70dba49021d6e4ec8961a9 (patch) | |
tree | 0570c05336f5cb3da8fa4c1f2867a1dab3499a29 | |
parent | 9ba3c01923d45a19003641ceab311150752ed491 (diff) |
Fix splat-cred.c cred usage
No need to crhold current_cred(), fix possible leak in splat_cred_test2
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: Chunwei Chen <[email protected]>
Closes #556
-rw-r--r-- | module/splat/splat-cred.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/module/splat/splat-cred.c b/module/splat/splat-cred.c index fadf9bca0..e3d1c4eee 100644 --- a/module/splat/splat-cred.c +++ b/module/splat/splat-cred.c @@ -53,18 +53,18 @@ splat_cred_test1(struct file *file, void *arg) uid_t uid, ruid, suid; gid_t gid, rgid, sgid, *groups; int ngroups, i, count = 0; + cred_t *cr = CRED(); - uid = crgetuid(CRED()); - ruid = crgetruid(CRED()); - suid = crgetsuid(CRED()); + uid = crgetuid(cr); + ruid = crgetruid(cr); + suid = crgetsuid(cr); - gid = crgetgid(CRED()); - rgid = crgetrgid(CRED()); - sgid = crgetsgid(CRED()); + gid = crgetgid(cr); + rgid = crgetrgid(cr); + sgid = crgetsgid(cr); - crhold(CRED()); - ngroups = crgetngroups(CRED()); - groups = crgetgroups(CRED()); + ngroups = crgetngroups(cr); + groups = crgetgroups(cr); memset(str, 0, GROUP_STR_SIZE); for (i = 0; i < ngroups; i++) { @@ -78,8 +78,6 @@ splat_cred_test1(struct file *file, void *arg) } } - crfree(CRED()); - splat_vprint(file, SPLAT_CRED_TEST1_NAME, "uid: %d ruid: %d suid: %d " "gid: %d rgid: %d sgid: %d\n", @@ -114,6 +112,8 @@ splat_cred_test2(struct file *file, void *arg) gid_t gid, rgid, sgid, *groups; int ngroups, i, count = 0; + crhold(kcred); + uid = crgetuid(kcred); ruid = crgetruid(kcred); suid = crgetsuid(kcred); @@ -122,7 +122,6 @@ splat_cred_test2(struct file *file, void *arg) rgid = crgetrgid(kcred); sgid = crgetsgid(kcred); - crhold(kcred); ngroups = crgetngroups(kcred); groups = crgetgroups(kcred); @@ -134,6 +133,7 @@ splat_cred_test2(struct file *file, void *arg) splat_vprint(file, SPLAT_CRED_TEST2_NAME, "Failed too many group entries for temp " "buffer: %d, %s\n", ngroups, str); + crfree(kcred); return -ENOSPC; } } |