mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-18 23:59:53 +00:00
libceph: NULL deref on osdmap_apply_incremental() error path
There are hidden gotos in the ceph_decode_* macros. We need to set the "err" variable on these error paths otherwise we end up returning ERR_PTR(0) which is NULL. It causes NULL dereferences in the callers. Fixes: 6f428df47dae ("libceph: pg_upmap[_items] infrastructure") Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> [idryomov@gmail.com: similar bug in osdmap_decode(), changelog tweak] Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
This commit is contained in:
parent
e67ae2b7b2
commit
00c8ebb360
@ -1544,7 +1544,7 @@ static int osdmap_decode(void **p, void *end, struct ceph_osdmap *map)
|
||||
if (struct_v >= 3) {
|
||||
/* erasure_code_profiles */
|
||||
ceph_decode_skip_map_of_map(p, end, string, string, string,
|
||||
bad);
|
||||
e_inval);
|
||||
}
|
||||
|
||||
if (struct_v >= 4) {
|
||||
@ -1825,9 +1825,9 @@ struct ceph_osdmap *osdmap_apply_incremental(void **p, void *end,
|
||||
if (struct_v >= 3) {
|
||||
/* new_erasure_code_profiles */
|
||||
ceph_decode_skip_map_of_map(p, end, string, string, string,
|
||||
bad);
|
||||
e_inval);
|
||||
/* old_erasure_code_profiles */
|
||||
ceph_decode_skip_set(p, end, string, bad);
|
||||
ceph_decode_skip_set(p, end, string, e_inval);
|
||||
}
|
||||
|
||||
if (struct_v >= 4) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user