diff options
author | Dan Carpenter <dan.carpenter@oracle.com> | 2013-04-16 21:10:38 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-04-19 17:32:31 -0400 |
commit | e15465e1808542743627f13d1c0cbb7eacc82b83 (patch) | |
tree | 498799f640d53224044d5cdcb0463a162d7744a2 /include/net/irda | |
parent | fd7fc253289c419615c1c8bbe418598019567392 (diff) | |
download | op-kernel-dev-e15465e1808542743627f13d1c0cbb7eacc82b83.zip op-kernel-dev-e15465e1808542743627f13d1c0cbb7eacc82b83.tar.gz |
irda: small read past the end of array in debug code
The "reason" can come from skb->data[] and it hasn't been capped so it
can be from 0-255 instead of just 0-6. For example in irlmp_state_dtr()
the code does:
reason = skb->data[3];
...
irlmp_disconnect_indication(self, reason, skb);
Also LMREASON has a couple other values which don't have entries in the
irlmp_reasons[] array. And 0xff is a valid reason as well which means
"unknown".
So far as I can see we don't actually care about "reason" except for in
the debug code.
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/irda')
-rw-r--r-- | include/net/irda/irlmp.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/include/net/irda/irlmp.h b/include/net/irda/irlmp.h index f741091..f132924 100644 --- a/include/net/irda/irlmp.h +++ b/include/net/irda/irlmp.h @@ -256,7 +256,8 @@ static inline __u32 irlmp_get_daddr(const struct lsap_cb *self) return (self && self->lap) ? self->lap->daddr : 0; } -extern const char *irlmp_reasons[]; +const char *irlmp_reason_str(LM_REASON reason); + extern int sysctl_discovery_timeout; extern int sysctl_discovery_slots; extern int sysctl_discovery; |