summaryrefslogtreecommitdiffstats
path: root/net/irda/iriap.c
diff options
context:
space:
mode:
authorDan Carpenter <dan.carpenter@oracle.com>2013-04-16 23:10:38 +0200
committerDavid S. Miller <davem@davemloft.net>2013-04-19 23:32:31 +0200
commite15465e1808542743627f13d1c0cbb7eacc82b83 (patch)
tree498799f640d53224044d5cdcb0463a162d7744a2 /net/irda/iriap.c
parentMerge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf (diff)
downloadlinux-e15465e1808542743627f13d1c0cbb7eacc82b83.tar.xz
linux-e15465e1808542743627f13d1c0cbb7eacc82b83.zip
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 'net/irda/iriap.c')
-rw-r--r--net/irda/iriap.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/irda/iriap.c b/net/irda/iriap.c
index 29340a9a6fb9..e1b37f5a2691 100644
--- a/net/irda/iriap.c
+++ b/net/irda/iriap.c
@@ -303,7 +303,8 @@ static void iriap_disconnect_indication(void *instance, void *sap,
{
struct iriap_cb *self;
- IRDA_DEBUG(4, "%s(), reason=%s\n", __func__, irlmp_reasons[reason]);
+ IRDA_DEBUG(4, "%s(), reason=%s [%d]\n", __func__,
+ irlmp_reason_str(reason), reason);
self = instance;