summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPavel Skripkin <paskripkin@gmail.com>2021-06-14 15:06:50 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2021-06-23 14:41:25 +0200
commit26b8d10703a9be45d6097946b2b4011f7dd2c56f (patch)
treea801578d809f998d2133b6c885c42bbdb60f9164
parent8d3de2b47e5311f5efd3761703caa2bc87db2e06 (diff)
downloadlinux-stable-26b8d10703a9be45d6097946b2b4011f7dd2c56f.tar.gz
linux-stable-26b8d10703a9be45d6097946b2b4011f7dd2c56f.tar.bz2
linux-stable-26b8d10703a9be45d6097946b2b4011f7dd2c56f.zip
net: qrtr: fix OOB Read in qrtr_endpoint_post
[ Upstream commit ad9d24c9429e2159d1e279dc3a83191ccb4daf1d ] Syzbot reported slab-out-of-bounds Read in qrtr_endpoint_post. The problem was in wrong _size_ type: if (len != ALIGN(size, 4) + hdrlen) goto err; If size from qrtr_hdr is 4294967293 (0xfffffffd), the result of ALIGN(size, 4) will be 0. In case of len == hdrlen and size == 4294967293 in header this check won't fail and skb_put_data(skb, data + hdrlen, size); will read out of bound from data, which is hdrlen allocated block. Fixes: 194ccc88297a ("net: qrtr: Support decoding incoming v2 packets") Reported-and-tested-by: syzbot+1917d778024161609247@syzkaller.appspotmail.com Signed-off-by: Pavel Skripkin <paskripkin@gmail.com> Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
-rw-r--r--net/qrtr/qrtr.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/qrtr/qrtr.c b/net/qrtr/qrtr.c
index 46273a838361..faea2ce12511 100644
--- a/net/qrtr/qrtr.c
+++ b/net/qrtr/qrtr.c
@@ -257,7 +257,7 @@ int qrtr_endpoint_post(struct qrtr_endpoint *ep, const void *data, size_t len)
const struct qrtr_hdr_v2 *v2;
struct sk_buff *skb;
struct qrtr_cb *cb;
- unsigned int size;
+ size_t size;
unsigned int ver;
size_t hdrlen;