Skip to content

Commit

Permalink
ksmbd: fix control flow issues in sid_to_id()
Browse files Browse the repository at this point in the history
Addresses-Coverity reported Control flow issues in sid_to_id()
/fs/ksmbd/smbacl.c: 277 in sid_to_id()
271
272	if (sidtype == SIDOWNER) {
273		kuid_t uid;
274		uid_t id;
275
276		id = le32_to_cpu(psid->sub_auth[psid->num_subauth - 1]);
>>>	CID 1506810:  Control flow issues  (NO_EFFECT)
>>>	This greater-than-or-equal-to-zero comparison of an unsigned value
>>>	is always true. "id >= 0U".
277		if (id >= 0) {
278			/*
279			 * Translate raw sid into kuid in the server's user
280			 * namespace.
281			 */
282			uid = make_kuid(&init_user_ns, id);

Addresses-Coverity: ("Control flow issues")
Signed-off-by: Namjae Jeon <[email protected]>
  • Loading branch information
namjaejeon committed Sep 6, 2021
1 parent 6c8affe commit 77da0b9
Showing 1 changed file with 20 additions and 24 deletions.
44 changes: 20 additions & 24 deletions smbacl.c
Original file line number Diff line number Diff line change
Expand Up @@ -277,42 +277,38 @@ static int sid_to_id(struct user_namespace *user_ns,
uid_t id;

id = le32_to_cpu(psid->sub_auth[psid->num_subauth - 1]);
if (id >= 0) {
/*
* Translate raw sid into kuid in the server's user
* namespace.
*/
uid = make_kuid(&init_user_ns, id);
/*
* Translate raw sid into kuid in the server's user
* namespace.
*/
uid = make_kuid(&init_user_ns, id);

#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 12, 0)
/* If this is an idmapped mount, apply the idmapping. */
uid = kuid_from_mnt(user_ns, uid);
/* If this is an idmapped mount, apply the idmapping. */
uid = kuid_from_mnt(user_ns, uid);
#endif
if (uid_valid(uid)) {
fattr->cf_uid = uid;
rc = 0;
}
if (uid_valid(uid)) {
fattr->cf_uid = uid;
rc = 0;
}
} else {
kgid_t gid;
gid_t id;

id = le32_to_cpu(psid->sub_auth[psid->num_subauth - 1]);
if (id >= 0) {
/*
* Translate raw sid into kgid in the server's user
* namespace.
*/
gid = make_kgid(&init_user_ns, id);
/*
* Translate raw sid into kgid in the server's user
* namespace.
*/
gid = make_kgid(&init_user_ns, id);

#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 12, 0)
/* If this is an idmapped mount, apply the idmapping. */
gid = kgid_from_mnt(user_ns, gid);
/* If this is an idmapped mount, apply the idmapping. */
gid = kgid_from_mnt(user_ns, gid);
#endif
if (gid_valid(gid)) {
fattr->cf_gid = gid;
rc = 0;
}
if (gid_valid(gid)) {
fattr->cf_gid = gid;
rc = 0;
}
}

Expand Down

0 comments on commit 77da0b9

Please sign in to comment.