Commit 56a4f309 authored by Ilya Dryomov's avatar Ilya Dryomov

crush: ensure take bucket value is valid

Ensure that the take argument is a valid bucket ID before indexing the
buckets array.

Reflects ceph.git commit 93ec538e8a667699876b72459b8ad78966d89c61.
Signed-off-by: default avatarIlya Dryomov <idryomov@gmail.com>
Reviewed-by: default avatarSage Weil <sage@redhat.com>
parent f224a691
...@@ -835,7 +835,8 @@ int crush_do_rule(const struct crush_map *map, ...@@ -835,7 +835,8 @@ int crush_do_rule(const struct crush_map *map,
case CRUSH_RULE_TAKE: case CRUSH_RULE_TAKE:
if ((curstep->arg1 >= 0 && if ((curstep->arg1 >= 0 &&
curstep->arg1 < map->max_devices) || curstep->arg1 < map->max_devices) ||
(-1-curstep->arg1 < map->max_buckets && (-1-curstep->arg1 >= 0 &&
-1-curstep->arg1 < map->max_buckets &&
map->buckets[-1-curstep->arg1])) { map->buckets[-1-curstep->arg1])) {
w[0] = curstep->arg1; w[0] = curstep->arg1;
wsize = 1; wsize = 1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment