aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChunwei Chen <[email protected]>2016-10-18 17:29:26 -0700
committerBrian Behlendorf <[email protected]>2016-10-20 09:33:22 -0700
commit87063d7dc392cb710c70dba49021d6e4ec8961a9 (patch)
tree0570c05336f5cb3da8fa4c1f2867a1dab3499a29
parent9ba3c01923d45a19003641ceab311150752ed491 (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.c24
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;
}
}