if (r < 0)
return r;
- // compare against input bufferlen, leaving room for \0
- if (p_pool_name.length() + 1 > ppool_namelen ||
- p_name.length() + 1 > pnamelen ||
- p_snap_name.length() + 1 > psnap_namelen) {
- return -ERANGE;
+ if (parent_pool_name) {
+ if (p_pool_name.length() + 1 > ppool_namelen)
+ return -ERANGE;
+
+ strcpy(parent_pool_name, p_pool_name.c_str());
+ }
+ if (parent_name) {
+ if (p_name.length() + 1 > pnamelen)
+ return -ERANGE;
+
+ strcpy(parent_name, p_name.c_str());
+ }
+ if (parent_snap_name) {
+ if (p_snap_name.length() + 1 > psnap_namelen)
+ return -ERANGE;
+
+ strcpy(parent_snap_name, p_snap_name.c_str());
}
- strcpy(parent_pool_name, p_pool_name.c_str());
- strcpy(parent_name, p_name.c_str());
- strcpy(parent_snap_name, p_snap_name.c_str());
return 0;
}
EXPECT_NE(0, rbd_clone(ioctx, "parent", NULL, ioctx, "child", features, &order));
// verify that there is no parent info on "parent"
- char ppool[1], pname[1], psnapname[1];
- ASSERT_EQ(-ENOENT, rbd_get_parent_info(parent, ppool, sizeof(ppool),
- pname, sizeof(pname), psnapname, sizeof(psnapname)));
+ ASSERT_EQ(-ENOENT, rbd_get_parent_info(parent, NULL, 0, NULL, 0, NULL, 0));
printf("parent has no parent info\n");
// create a snapshot, reopen as the parent we're interested in
EXPECT_NE(0, rbd_clone(ioctx, "parent", NULL, ioctx, "child", features, &order));
// verify that there is no parent info on "parent"
- char ppool[1], pname[1], psnapname[1];
- ASSERT_EQ(-ENOENT, rbd_get_parent_info(parent, ppool, sizeof(ppool),
- pname, sizeof(pname), psnapname, sizeof(psnapname)));
+ ASSERT_EQ(-ENOENT, rbd_get_parent_info(parent, NULL, 0, NULL, 0, NULL, 0));
printf("parent has no parent info\n");
// create a snapshot, reopen as the parent we're interested in