]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: block name prefix might overflow fixed size C-string 11148/head
authorJason Dillaman <dillaman@redhat.com>
Tue, 20 Sep 2016 11:25:36 +0000 (07:25 -0400)
committerJason Dillaman <dillaman@redhat.com>
Tue, 20 Sep 2016 11:28:40 +0000 (07:28 -0400)
The issue which resulted in too large v2 image ids was fixed
under #16887.

Fixes: http://tracker.ceph.com/issues/17310
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
src/librbd/internal.cc

index 78b0057db841da24e328ba79d83df03444b9326f..deba6ebb3985c27485e832936932e8dc05b3eb87 100644 (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';