diff mbox

[media] bt8xx: info leak in ca_get_slot_info()

Message ID 20130725164621.GA6945@elgon.mountain (mailing list archive)
State New, archived
Headers show

Commit Message

Dan Carpenter July 25, 2013, 4:46 p.m. UTC
p_ca_slot_info was allocated with kmalloc() so we need to clear it
before passing it to the user.

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

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Walter Harms July 25, 2013, 5:29 p.m. UTC | #1
Am 25.07.2013 18:46, schrieb Dan Carpenter:
> p_ca_slot_info was allocated with kmalloc() so we need to clear it
> before passing it to the user.
> 
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> 
> diff --git a/drivers/media/pci/bt8xx/dst_ca.c b/drivers/media/pci/bt8xx/dst_ca.c
> index 0e788fc..6b9dc3f 100644
> --- a/drivers/media/pci/bt8xx/dst_ca.c
> +++ b/drivers/media/pci/bt8xx/dst_ca.c
> @@ -302,8 +302,11 @@ static int ca_get_slot_info(struct dst_state *state, struct ca_slot_info *p_ca_s
>  		p_ca_slot_info->flags = CA_CI_MODULE_READY;
>  		p_ca_slot_info->num = 1;
>  		p_ca_slot_info->type = CA_CI;
> -	} else
> +	} else {
>  		p_ca_slot_info->flags = 0;
> +		p_ca_slot_info->num = 0;
> +		p_ca_slot_info->type = 0;
> +	}
>  
>  	if (copy_to_user(arg, p_ca_slot_info, sizeof (struct ca_slot_info)))
>  		return -EFAULT;

note: i have no clue how p_ca_slot_info looks like,
but to avoid information leaks via compiler padding etc. i could be more wise
to do a  memset(p_ca_slot_info,0,sizeof (struct ca_slot_info))
and then set the
	p_ca_slot_info->flags = CA_CI_MODULE_READY;
	p_ca_slot_info->num = 1;
	p_ca_slot_info->type = CA_CI;

just my 2 cents,
re,
 wh
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Dan Carpenter July 25, 2013, 5:38 p.m. UTC | #2
On Thu, Jul 25, 2013 at 07:29:09PM +0200, walter harms wrote:
> 
> 
> Am 25.07.2013 18:46, schrieb Dan Carpenter:
> > p_ca_slot_info was allocated with kmalloc() so we need to clear it
> > before passing it to the user.
> > 
> > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> > 
> > diff --git a/drivers/media/pci/bt8xx/dst_ca.c b/drivers/media/pci/bt8xx/dst_ca.c
> > index 0e788fc..6b9dc3f 100644
> > --- a/drivers/media/pci/bt8xx/dst_ca.c
> > +++ b/drivers/media/pci/bt8xx/dst_ca.c
> > @@ -302,8 +302,11 @@ static int ca_get_slot_info(struct dst_state *state, struct ca_slot_info *p_ca_s
> >  		p_ca_slot_info->flags = CA_CI_MODULE_READY;
> >  		p_ca_slot_info->num = 1;
> >  		p_ca_slot_info->type = CA_CI;
> > -	} else
> > +	} else {
> >  		p_ca_slot_info->flags = 0;
> > +		p_ca_slot_info->num = 0;
> > +		p_ca_slot_info->type = 0;
> > +	}
> >  
> >  	if (copy_to_user(arg, p_ca_slot_info, sizeof (struct ca_slot_info)))
> >  		return -EFAULT;
> 
> note: i have no clue how p_ca_slot_info looks like,
> but to avoid information leaks via compiler padding etc. i could be more wise
> to do a  memset(p_ca_slot_info,0,sizeof (struct ca_slot_info))
> and then set the

There is no compiler padding.  My static checker looks for that.

regards,
dan carpenter

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/media/pci/bt8xx/dst_ca.c b/drivers/media/pci/bt8xx/dst_ca.c
index 0e788fc..6b9dc3f 100644
--- a/drivers/media/pci/bt8xx/dst_ca.c
+++ b/drivers/media/pci/bt8xx/dst_ca.c
@@ -302,8 +302,11 @@  static int ca_get_slot_info(struct dst_state *state, struct ca_slot_info *p_ca_s
 		p_ca_slot_info->flags = CA_CI_MODULE_READY;
 		p_ca_slot_info->num = 1;
 		p_ca_slot_info->type = CA_CI;
-	} else
+	} else {
 		p_ca_slot_info->flags = 0;
+		p_ca_slot_info->num = 0;
+		p_ca_slot_info->type = 0;
+	}
 
 	if (copy_to_user(arg, p_ca_slot_info, sizeof (struct ca_slot_info)))
 		return -EFAULT;