kernel-janitors.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [patch] Smack: harmless underflow in smk_set_cipso()
@ 2015-11-03 22:15 Dan Carpenter
  2015-12-03 22:23 ` Casey Schaufler
  2015-12-04 12:53 ` Dan Carpenter
  0 siblings, 2 replies; 3+ messages in thread
From: Dan Carpenter @ 2015-11-03 22:15 UTC (permalink / raw)
  To: kernel-janitors

This causes a static checker warning because "maplevel" is set by the
user and we cap the upper bound but not the lower bound.  It seems
harmless to me and it's root only but we may as well make the static
checker happy.

Also checkpatch complains that we should use kstrtouint() instead of
sscanf here.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

diff --git a/security/smack/smackfs.c b/security/smack/smackfs.c
index 94bd9e4..ebb1241 100644
--- a/security/smack/smackfs.c
+++ b/security/smack/smackfs.c
@@ -862,7 +862,7 @@ static ssize_t smk_set_cipso(struct file *file, const char __user *buf,
 	struct smack_known *skp;
 	struct netlbl_lsm_secattr ncats;
 	char mapcatset[SMK_CIPSOLEN];
-	int maplevel;
+	unsigned int maplevel;
 	unsigned int cat;
 	int catlen;
 	ssize_t rc = -EINVAL;
@@ -912,8 +912,8 @@ static ssize_t smk_set_cipso(struct file *file, const char __user *buf,
 	else
 		rule += strlen(skp->smk_known) + 1;
 
-	ret = sscanf(rule, "%d", &maplevel);
-	if (ret != 1 || maplevel > SMACK_CIPSO_MAXLEVEL)
+	ret = kstrtouint(rule, 10, &maplevel);
+	if (ret || maplevel > SMACK_CIPSO_MAXLEVEL)
 		goto out;
 
 	rule += SMK_DIGITLEN;

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [patch] Smack: harmless underflow in smk_set_cipso()
  2015-11-03 22:15 [patch] Smack: harmless underflow in smk_set_cipso() Dan Carpenter
@ 2015-12-03 22:23 ` Casey Schaufler
  2015-12-04 12:53 ` Dan Carpenter
  1 sibling, 0 replies; 3+ messages in thread
From: Casey Schaufler @ 2015-12-03 22:23 UTC (permalink / raw)
  To: kernel-janitors

On 11/3/2015 2:15 PM, Dan Carpenter wrote:
> This causes a static checker warning because "maplevel" is set by the
> user and we cap the upper bound but not the lower bound.  It seems
> harmless to me and it's root only but we may as well make the static
> checker happy.
>
> Also checkpatch complains that we should use kstrtouint() instead of
> sscanf here.
>
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

This no longer parses cipso specifications correctly.
I haven't investigated why. It looks as if it should
work. Does kstrtouint() allow for leading whitespace?
If not, that's the problem.
  

>
> diff --git a/security/smack/smackfs.c b/security/smack/smackfs.c
> index 94bd9e4..ebb1241 100644
> --- a/security/smack/smackfs.c
> +++ b/security/smack/smackfs.c
> @@ -862,7 +862,7 @@ static ssize_t smk_set_cipso(struct file *file, const char __user *buf,
>   	struct smack_known *skp;
>   	struct netlbl_lsm_secattr ncats;
>   	char mapcatset[SMK_CIPSOLEN];
> -	int maplevel;
> +	unsigned int maplevel;
>   	unsigned int cat;
>   	int catlen;
>   	ssize_t rc = -EINVAL;
> @@ -912,8 +912,8 @@ static ssize_t smk_set_cipso(struct file *file, const char __user *buf,
>   	else
>   		rule += strlen(skp->smk_known) + 1;
>   
> -	ret = sscanf(rule, "%d", &maplevel);
> -	if (ret != 1 || maplevel > SMACK_CIPSO_MAXLEVEL)
> +	ret = kstrtouint(rule, 10, &maplevel);
> +	if (ret || maplevel > SMACK_CIPSO_MAXLEVEL)
>   		goto out;
>   
>   	rule += SMK_DIGITLEN;
>


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [patch] Smack: harmless underflow in smk_set_cipso()
  2015-11-03 22:15 [patch] Smack: harmless underflow in smk_set_cipso() Dan Carpenter
  2015-12-03 22:23 ` Casey Schaufler
@ 2015-12-04 12:53 ` Dan Carpenter
  1 sibling, 0 replies; 3+ messages in thread
From: Dan Carpenter @ 2015-12-04 12:53 UTC (permalink / raw)
  To: kernel-janitors

On Thu, Dec 03, 2015 at 02:23:22PM -0800, Casey Schaufler wrote:
> On 11/3/2015 2:15 PM, Dan Carpenter wrote:
> >Also checkpatch complains that we should use kstrtouint() instead of
> >sscanf here.
> >
> >Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> 
> This no longer parses cipso specifications correctly.
> I haven't investigated why. It looks as if it should
> work. Does kstrtouint() allow for leading whitespace?

No it doesn't.  I feel slightly betrayed because checkpatch.pl told me
to introduce that bug.  I have said so many times that I think
checkpatch.pl should not tell people to introduce bugs...

regards,
dan carpenter


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2015-12-04 12:53 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-11-03 22:15 [patch] Smack: harmless underflow in smk_set_cipso() Dan Carpenter
2015-12-03 22:23 ` Casey Schaufler
2015-12-04 12:53 ` Dan Carpenter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).