Linux-WPAN Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH net] 6lowpan: Off by one handling ->nexthdr
@ 2019-04-03  5:34 Dan Carpenter
  2019-04-03  6:23 ` Jukka Rissanen
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Dan Carpenter @ 2019-04-03  5:34 UTC (permalink / raw)
  To: Alexander Aring
  Cc: Jukka Rissanen, David S. Miller, linux-bluetooth, linux-wpan,
	netdev, kernel-janitors

NEXTHDR_MAX is 255.  What happens here is that we take a u8 value
"hdr->nexthdr" from the network and then look it up in
lowpan_nexthdr_nhcs[].  The problem is that if hdr->nexthdr is 0xff then
we read one element beyond the end of the array so the array needs to
be one element larger.

Fixes: 92aa7c65d295 ("6lowpan: add generic nhc layer interface")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
---
This is the only place which uses the NEXTHDR_MAX define, so I considered
changing that to 256 instead.  Either fix would work.

 net/6lowpan/nhc.c  | 2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/net/6lowpan/nhc.c b/net/6lowpan/nhc.c
index 4fa2fdda174d..9e56fb98f33c 100644
--- a/net/6lowpan/nhc.c
+++ b/net/6lowpan/nhc.c
@@ -18,7 +18,7 @@
 #include "nhc.h"
 
 static struct rb_root rb_root = RB_ROOT;
-static struct lowpan_nhc *lowpan_nexthdr_nhcs[NEXTHDR_MAX];
+static struct lowpan_nhc *lowpan_nexthdr_nhcs[NEXTHDR_MAX + 1];
 static DEFINE_SPINLOCK(lowpan_nhc_lock);
 
 static int lowpan_nhc_insert(struct lowpan_nhc *nhc)
-- 
2.17.1

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

* Re: [PATCH net] 6lowpan: Off by one handling ->nexthdr
  2019-04-03  5:34 [PATCH net] 6lowpan: Off by one handling ->nexthdr Dan Carpenter
@ 2019-04-03  6:23 ` Jukka Rissanen
  2019-04-08 18:16 ` Alexander Aring
  2019-04-23 17:10 ` Marcel Holtmann
  2 siblings, 0 replies; 4+ messages in thread
From: Jukka Rissanen @ 2019-04-03  6:23 UTC (permalink / raw)
  To: Dan Carpenter, Alexander Aring
  Cc: David S. Miller, linux-bluetooth, linux-wpan, netdev, kernel-janitors

Hi Dan,

On Wed, 2019-04-03 at 08:34 +0300, Dan Carpenter wrote:
> NEXTHDR_MAX is 255.  What happens here is that we take a u8 value
> "hdr->nexthdr" from the network and then look it up in
> lowpan_nexthdr_nhcs[].  The problem is that if hdr->nexthdr is 0xff
> then
> we read one element beyond the end of the array so the array needs to
> be one element larger.
> 
> Fixes: 92aa7c65d295 ("6lowpan: add generic nhc layer interface")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> ---
> This is the only place which uses the NEXTHDR_MAX define, so I
> considered
> changing that to 256 instead.  Either fix would work.
> 
>  net/6lowpan/nhc.c  | 2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/net/6lowpan/nhc.c b/net/6lowpan/nhc.c
> index 4fa2fdda174d..9e56fb98f33c 100644
> --- a/net/6lowpan/nhc.c
> +++ b/net/6lowpan/nhc.c
> @@ -18,7 +18,7 @@
>  #include "nhc.h"
>  
>  static struct rb_root rb_root = RB_ROOT;
> -static struct lowpan_nhc *lowpan_nexthdr_nhcs[NEXTHDR_MAX];
> +static struct lowpan_nhc *lowpan_nexthdr_nhcs[NEXTHDR_MAX + 1];
>  static DEFINE_SPINLOCK(lowpan_nhc_lock);
>  
>  static int lowpan_nhc_insert(struct lowpan_nhc *nhc)

Nice catch!

Acked-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>


Cheers,
Jukka

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

* Re: [PATCH net] 6lowpan: Off by one handling ->nexthdr
  2019-04-03  5:34 [PATCH net] 6lowpan: Off by one handling ->nexthdr Dan Carpenter
  2019-04-03  6:23 ` Jukka Rissanen
@ 2019-04-08 18:16 ` Alexander Aring
  2019-04-23 17:10 ` Marcel Holtmann
  2 siblings, 0 replies; 4+ messages in thread
From: Alexander Aring @ 2019-04-08 18:16 UTC (permalink / raw)
  To: Dan Carpenter
  Cc: Alexander Aring, Jukka Rissanen, David S. Miller,
	linux-bluetooth, linux-wpan, netdev, kernel-janitors

Hi,

On Wed, Apr 03, 2019 at 08:34:16AM +0300, Dan Carpenter wrote:
> NEXTHDR_MAX is 255.  What happens here is that we take a u8 value
> "hdr->nexthdr" from the network and then look it up in
> lowpan_nexthdr_nhcs[].  The problem is that if hdr->nexthdr is 0xff then
> we read one element beyond the end of the array so the array needs to
> be one element larger.
> 
> Fixes: 92aa7c65d295 ("6lowpan: add generic nhc layer interface")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

Acked-by: Alexander Aring <aring@mojatatu.com>

Thanks.

- Alex

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

* Re: [PATCH net] 6lowpan: Off by one handling ->nexthdr
  2019-04-03  5:34 [PATCH net] 6lowpan: Off by one handling ->nexthdr Dan Carpenter
  2019-04-03  6:23 ` Jukka Rissanen
  2019-04-08 18:16 ` Alexander Aring
@ 2019-04-23 17:10 ` Marcel Holtmann
  2 siblings, 0 replies; 4+ messages in thread
From: Marcel Holtmann @ 2019-04-23 17:10 UTC (permalink / raw)
  To: Dan Carpenter
  Cc: Alexander Aring, Jukka Rissanen, David S. Miller,
	linux-bluetooth, linux-wpan, netdev, kernel-janitors

Hi Dan,

> NEXTHDR_MAX is 255.  What happens here is that we take a u8 value
> "hdr->nexthdr" from the network and then look it up in
> lowpan_nexthdr_nhcs[].  The problem is that if hdr->nexthdr is 0xff then
> we read one element beyond the end of the array so the array needs to
> be one element larger.
> 
> Fixes: 92aa7c65d295 ("6lowpan: add generic nhc layer interface")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> ---
> This is the only place which uses the NEXTHDR_MAX define, so I considered
> changing that to 256 instead.  Either fix would work.
> 
> net/6lowpan/nhc.c  | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)

patch has been applied to bluetooth-next tree.

Regards

Marcel

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

end of thread, back to index

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-04-03  5:34 [PATCH net] 6lowpan: Off by one handling ->nexthdr Dan Carpenter
2019-04-03  6:23 ` Jukka Rissanen
2019-04-08 18:16 ` Alexander Aring
2019-04-23 17:10 ` Marcel Holtmann

Linux-WPAN Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-wpan/0 linux-wpan/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-wpan linux-wpan/ https://lore.kernel.org/linux-wpan \
		linux-wpan@vger.kernel.org
	public-inbox-index linux-wpan

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-wpan


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git