summaryrefslogtreecommitdiffstats
path: root/include/net/irda
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 /include/net/irda
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 'include/net/irda')
-rw-r--r--include/net/irda/irlmp.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/include/net/irda/irlmp.h b/include/net/irda/irlmp.h
index f74109144d3f..f132924cc9da 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;