libceph: NULL deref on crush_decode() error path
authorDan Carpenter <dan.carpenter@oracle.com>
Tue, 23 May 2017 14:25:10 +0000 (17:25 +0300)
committerBen Hutchings <ben@decadent.org.uk>
Fri, 15 Sep 2017 17:30:47 +0000 (18:30 +0100)
commitaf0b6ca74ba5349f13faf0159ad4f6de214d448a
tree3470724c2c15262755e085ff99f2894fa9719c53
parent93bfaf316fd00c28c94a04ca9ecade0b4f5c73c2
libceph: NULL deref on crush_decode() error path

commit 293dffaad8d500e1a5336eeb90d544cf40d4fbd8 upstream.

If there is not enough space then ceph_decode_32_safe() does a goto bad.
We need to return an error code in that situation.  The current code
returns ERR_PTR(0) which is NULL.  The callers are not expecting that
and it results in a NULL dereference.

Fixes: f24e9980eb86 ("ceph: OSD client")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
net/ceph/osdmap.c