2007-08-04 18:36:58

by Jesper Juhl

[permalink] [raw]
Subject: [PATCH][RESEND][ISDN] Guard against a potential NULL pointer dereference in old_capi_manufacturer()

(first send: Monday 25 June 2007, resending due to no response)
(resending again on August 8'th, 2007)


In drivers/isdn/capi/kcapi.c::old_capi_manufacturer(), if the call
to get_capi_ctr_by_nr(ldef.contr); in line 823 returns NULL, then
we'll be dereferencing a NULL pointer in the very next line.

(Found by Coverity checker as bug #402)


Signed-off-by: Jesper Juhl <[email protected]>
---

drivers/isdn/capi/kcapi.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/drivers/isdn/capi/kcapi.c b/drivers/isdn/capi/kcapi.c
index 3ed34f7..3f9e962 100644
--- a/drivers/isdn/capi/kcapi.c
+++ b/drivers/isdn/capi/kcapi.c
@@ -821,6 +821,8 @@ static int old_capi_manufacturer(unsigned int cmd, void
__user *data)
return -EFAULT;
}
card = get_capi_ctr_by_nr(ldef.contr);
+ if (!card)
+ return -EINVAL;
card = capi_ctr_get(card);
if (!card)
return -ESRCH;


2007-08-06 12:06:40

by Karsten Keil

[permalink] [raw]
Subject: Re: [PATCH][RESEND][ISDN] Guard against a potential NULL pointer dereference in old_capi_manufacturer()

On Sat, Aug 04, 2007 at 08:31:54PM +0200, Jesper Juhl wrote:
> (first send: Monday 25 June 2007, resending due to no response)
> (resending again on August 8'th, 2007)
>
>
> In drivers/isdn/capi/kcapi.c::old_capi_manufacturer(), if the call
> to get_capi_ctr_by_nr(ldef.contr); in line 823 returns NULL, then
> we'll be dereferencing a NULL pointer in the very next line.
>
> (Found by Coverity checker as bug #402)
>
>
> Signed-off-by: Jesper Juhl <[email protected]>

Acked-by: Karsten Keil <[email protected]>

> ---
>
> drivers/isdn/capi/kcapi.c | 2 ++
> 1 files changed, 2 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/isdn/capi/kcapi.c b/drivers/isdn/capi/kcapi.c
> index 3ed34f7..3f9e962 100644
> --- a/drivers/isdn/capi/kcapi.c
> +++ b/drivers/isdn/capi/kcapi.c
> @@ -821,6 +821,8 @@ static int old_capi_manufacturer(unsigned int cmd, void
> __user *data)
> return -EFAULT;
> }
> card = get_capi_ctr_by_nr(ldef.contr);
> + if (!card)
> + return -EINVAL;
> card = capi_ctr_get(card);
> if (!card)
> return -ESRCH;
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/

--
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 16746 (AG Nuernberg)