Merge pull request #11148 from dillaman/wip-17310

librbd: block name prefix might overflow fixed size C-string

Reviewed-by: Mykola Golub <mgolub@mirantis.com>
This commit is contained in:
Mykola Golub 2016-09-22 13:50:03 +03:00 committed by GitHub
commit 83697fd5aa

View File

@ -475,9 +475,10 @@ int mirror_image_disable_internal(ImageCtx *ictx, bool force,
info.obj_size = 1ULL << obj_order;
info.num_objs = Striper::get_num_objects(ictx->layout, info.size);
info.order = obj_order;
memcpy(&info.block_name_prefix, ictx->object_prefix.c_str(),
min((size_t)RBD_MAX_BLOCK_NAME_SIZE,
ictx->object_prefix.length() + 1));
strncpy(info.block_name_prefix, ictx->object_prefix.c_str(),
RBD_MAX_BLOCK_NAME_SIZE);
info.block_name_prefix[RBD_MAX_BLOCK_NAME_SIZE - 1] = '\0';
// clear deprecated fields
info.parent_pool = -1L;
info.parent_name[0] = '\0';