Commit 9611db82 authored by Ben Walker's avatar Ben Walker
Browse files

lvol: Remove all uses of strncpy



strncpy is going to be added to the list of banned functions because
it does not guarantee strings are null terminated.

Change-Id: Iabd65cc703f56e8bc561344893aaeb6dc5f25fb8
Signed-off-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.gerrithub.io/407022


Tested-by: default avatarSPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
parent 6ebfbf73
Loading
Loading
Loading
Loading
+17 −13
Original line number Diff line number Diff line
@@ -224,7 +224,7 @@ _spdk_load_next_lvol(void *cb_arg, struct spdk_blob *blob, int lvolerrno)
		goto invalid;
	}

	strncpy(lvol->name, attr, SPDK_LVOL_NAME_MAX);
	snprintf(lvol->name, sizeof(lvol->name), "%s", attr);

	TAILQ_INSERT_TAIL(&lvs->lvols, lvol, link);

@@ -319,7 +319,7 @@ _spdk_lvs_read_uuid(void *cb_arg, struct spdk_blob *blob, int lvolerrno)
		return;
	}

	strncpy(lvs->name, attr, value_len);
	snprintf(lvs->name, sizeof(lvs->name), "%s", attr);

	rc = _spdk_add_lvs_to_list(lvs);
	if (rc) {
@@ -413,7 +413,7 @@ spdk_lvs_load(struct spdk_bs_dev *bs_dev, spdk_lvs_op_with_handle_complete cb_fn
	req->bs_dev = bs_dev;

	spdk_lvs_bs_opts_init(&opts);
	strncpy(opts.bstype.bstype, "LVOLSTORE", SPDK_BLOBSTORE_TYPE_LENGTH);
	snprintf(opts.bstype.bstype, sizeof(opts.bstype.bstype), "LVOLSTORE");

	spdk_bs_load(bs_dev, &opts, _spdk_lvs_load_cb, req);
}
@@ -595,7 +595,7 @@ spdk_lvs_init(struct spdk_bs_dev *bs_dev, struct spdk_lvs_opts *o,
	}

	spdk_uuid_generate(&lvs->uuid);
	strncpy(lvs->name, o->name, SPDK_LVS_NAME_MAX);
	snprintf(lvs->name, sizeof(lvs->name), "%s", o->name);

	rc = _spdk_add_lvs_to_list(lvs);
	if (rc) {
@@ -618,7 +618,7 @@ spdk_lvs_init(struct spdk_bs_dev *bs_dev, struct spdk_lvs_opts *o,
	lvs->bs_dev = bs_dev;
	lvs->destruct = false;

	strncpy(opts.bstype.bstype, "LVOLSTORE", SPDK_BLOBSTORE_TYPE_LENGTH);
	snprintf(opts.bstype.bstype, sizeof(opts.bstype.bstype), "LVOLSTORE");

	SPDK_INFOLOG(SPDK_LOG_LVOL, "Initializing lvol store\n");
	spdk_bs_init(bs_dev, &opts, _spdk_lvs_init_cb, lvs_req);
@@ -638,10 +638,14 @@ _spdk_lvs_rename_cb(void *cb_arg, int lvolerrno)
		SPDK_ERRLOG("Lvol store rename operation failed\n");
		/* Lvs renaming failed, so we should 'clear' new_name.
		 * Otherwise it could cause a failure on the next attepmt to change the name to 'new_name'  */
		strncpy(req->lvol_store->new_name, req->lvol_store->name, SPDK_LVS_NAME_MAX);
		snprintf(req->lvol_store->new_name,
			 sizeof(req->lvol_store->new_name),
			 "%s", req->lvol_store->name);
	} else {
		/* Update lvs name with new_name */
		strncpy(req->lvol_store->name, req->lvol_store->new_name, SPDK_LVS_NAME_MAX);
		snprintf(req->lvol_store->name,
			 sizeof(req->lvol_store->name),
			 "%s", req->lvol_store->new_name);
	}

	req->cb_fn(req->cb_arg, req->lvserrno);
@@ -714,7 +718,7 @@ spdk_lvs_rename(struct spdk_lvol_store *lvs, const char *new_name,
		cb_fn(cb_arg, -ENOMEM);
		return;
	}
	strncpy(lvs->new_name, new_name, SPDK_LVS_NAME_MAX);
	snprintf(lvs->new_name, sizeof(lvs->new_name), "%s", new_name);
	req->lvol_store = lvs;
	req->cb_fn = cb_fn;
	req->cb_arg = cb_arg;
@@ -1085,7 +1089,7 @@ spdk_lvol_create(struct spdk_lvol_store *lvs, const char *name, uint64_t sz,
	num_clusters = divide_round_up(sz, spdk_bs_get_cluster_size(bs));
	lvol->close_only = false;
	lvol->thin_provision = thin_provision;
	strncpy(lvol->name, name, SPDK_LVS_NAME_MAX);
	snprintf(lvol->name, sizeof(lvol->name), "%s", name);
	spdk_uuid_generate(&lvol->uuid);
	spdk_uuid_fmt_lower(lvol->uuid_str, sizeof(lvol->uuid_str), &lvol->uuid);
	req->lvol = lvol;
@@ -1145,7 +1149,7 @@ spdk_lvol_create_snapshot(struct spdk_lvol *origlvol, const char *snapshot_name,
	}

	newlvol->lvol_store = origlvol->lvol_store;
	strncpy(newlvol->name, snapshot_name, SPDK_LVOL_NAME_MAX);
	snprintf(newlvol->name, sizeof(newlvol->name), "%s", snapshot_name);
	snapshot_xattrs.count = 1;
	snapshot_xattrs.ctx = newlvol;
	snapshot_xattrs.names = &xattr_names;
@@ -1200,7 +1204,7 @@ spdk_lvol_create_clone(struct spdk_lvol *origlvol, const char *clone_name,
	}

	newlvol->lvol_store = lvs;
	strncpy(newlvol->name, clone_name, SPDK_LVOL_NAME_MAX);
	snprintf(newlvol->name, sizeof(newlvol->name), "%s", clone_name);
	clone_xattrs.count = 1;
	clone_xattrs.ctx = newlvol;
	clone_xattrs.names = &xattr_names;
@@ -1268,7 +1272,7 @@ _spdk_lvol_rename_cb(void *cb_arg, int lvolerrno)
	if (lvolerrno != 0) {
		SPDK_ERRLOG("Lvol rename operation failed\n");
	} else {
		strncpy(req->lvol->name, req->name, SPDK_LVOL_NAME_MAX);
		snprintf(req->lvol->name, sizeof(req->lvol->name), "%s", req->name);
	}

	req->cb_fn(req->cb_arg, lvolerrno);
@@ -1309,7 +1313,7 @@ spdk_lvol_rename(struct spdk_lvol *lvol, const char *new_name,
	req->cb_fn = cb_fn;
	req->cb_arg = cb_arg;
	req->lvol = lvol;
	strncpy(req->name, new_name, SPDK_LVOL_NAME_MAX);
	snprintf(req->name, sizeof(req->name), "%s", new_name);

	rc = spdk_blob_set_xattr(blob, "name", new_name, strlen(new_name) + 1);
	if (rc < 0) {
+11 −11
Original line number Diff line number Diff line
@@ -115,7 +115,7 @@ spdk_lvs_rename(struct spdk_lvol_store *lvs, const char *new_name,
	if (g_lvs_with_name_already_exists) {
		g_lvolerrno = -EEXIST;
	} else {
		strncpy(lvs->name, new_name, SPDK_LVS_NAME_MAX);
		snprintf(lvs->name, sizeof(lvs->name), "%s", new_name);
		g_lvolerrno = 0;
	}

@@ -141,7 +141,7 @@ spdk_lvol_rename(struct spdk_lvol *lvol, const char *new_name,
		}
	}

	strncpy(lvol->name, new_name, SPDK_LVOL_NAME_MAX);
	snprintf(lvol->name, sizeof(lvol->name), "%s", new_name);

	cb_fn(cb_arg, g_lvolerrno);
}
@@ -270,7 +270,7 @@ spdk_lvs_init(struct spdk_bs_dev *bs_dev, struct spdk_lvs_opts *o,
		SPDK_CU_ASSERT_FATAL(lvs != NULL);
		TAILQ_INIT(&lvs->lvols);
		spdk_uuid_generate(&lvs->uuid);
		strncpy(lvs->name, o->name, SPDK_LVS_NAME_MAX);
		snprintf(lvs->name, sizeof(lvs->name), "%s", o->name);
		lvs->bs_dev = bs_dev;
		error = 0;
	}
@@ -571,7 +571,7 @@ spdk_lvol_create(struct spdk_lvol_store *lvs, const char *name, size_t sz,
	struct spdk_lvol *lvol;

	lvol = _lvol_create(lvs);
	strncpy(lvol->name, name, SPDK_LVS_NAME_MAX);
	snprintf(lvol->name, sizeof(lvol->name), "%s", name);
	cb_fn(cb_arg, lvol, 0);

	return 0;
@@ -584,7 +584,7 @@ spdk_lvol_create_snapshot(struct spdk_lvol *lvol, const char *snapshot_name,
	struct spdk_lvol *snap;

	snap = _lvol_create(lvol->lvol_store);
	strncpy(snap->name, snapshot_name, SPDK_LVOL_NAME_MAX);
	snprintf(snap->name, sizeof(snap->name), "%s", snapshot_name);
	cb_fn(cb_arg, snap, 0);
}

@@ -595,7 +595,7 @@ spdk_lvol_create_clone(struct spdk_lvol *lvol, const char *clone_name,
	struct spdk_lvol *clone;

	clone = _lvol_create(lvol->lvol_store);
	strncpy(clone->name, clone_name, SPDK_LVS_NAME_MAX);
	snprintf(clone->name, sizeof(clone->name), "%s", clone_name);
	cb_fn(cb_arg, clone, 0);
}

@@ -690,7 +690,7 @@ ut_lvol_init(void)
	SPDK_CU_ASSERT_FATAL(g_base_bdev != NULL);

	/* Assign name to lvs */
	strncpy(g_lvs->name, "UNIT_TEST_LVS_NAME", SPDK_LVS_NAME_MAX);
	snprintf(g_lvs->name, sizeof(g_lvs->name), "UNIT_TEST_LVS_NAME");
	SPDK_CU_ASSERT_FATAL(g_lvs->name != NULL);

	g_lvs_bdev->lvs = g_lvs;
@@ -734,7 +734,7 @@ ut_lvol_snapshot(void)
	SPDK_CU_ASSERT_FATAL(g_base_bdev != NULL);

	/* Assign name to lvs */
	strncpy(g_lvs->name, "UNIT_TEST_LVS_NAME", SPDK_LVS_NAME_MAX);
	snprintf(g_lvs->name, sizeof(g_lvs->name), "UNIT_TEST_LVS_NAME");
	SPDK_CU_ASSERT_FATAL(g_lvs->name != NULL);

	g_lvs_bdev->lvs = g_lvs;
@@ -793,7 +793,7 @@ ut_lvol_clone(void)
	SPDK_CU_ASSERT_FATAL(g_base_bdev != NULL);

	/* Assign name to lvs */
	strncpy(g_lvs->name, "UNIT_TEST_LVS_NAME", SPDK_LVS_NAME_MAX);
	snprintf(g_lvs->name, sizeof(g_lvs->name), "UNIT_TEST_LVS_NAME");
	SPDK_CU_ASSERT_FATAL(g_lvs->name != NULL);

	g_lvs_bdev->lvs = g_lvs;
@@ -945,7 +945,7 @@ ut_lvol_examine(void)
	SPDK_CU_ASSERT_FATAL(g_base_bdev != NULL);

	/* Assign name to lvs */
	strncpy(g_lvs->name, "UNIT_TEST_LVS_NAME", SPDK_LVS_NAME_MAX);
	snprintf(g_lvs->name, sizeof(g_lvs->name), "UNIT_TEST_LVS_NAME");
	SPDK_CU_ASSERT_FATAL(g_lvs->name != NULL);

	g_bs_dev = NULL;
@@ -991,7 +991,7 @@ ut_lvol_rename(void)
	SPDK_CU_ASSERT_FATAL(g_base_bdev != NULL);

	/* Assign name to lvs */
	strncpy(g_lvs->name, "UNIT_TEST_LVS_NAME", SPDK_LVS_NAME_MAX);
	snprintf(g_lvs->name, sizeof(g_lvs->name), "UNIT_TEST_LVS_NAME");
	SPDK_CU_ASSERT_FATAL(g_lvs->name != NULL);

	g_lvs_bdev->lvs = g_lvs;
+24 −24
Original line number Diff line number Diff line
@@ -477,7 +477,7 @@ lvs_init_unload_success(void)

	spdk_allocate_thread(_lvol_send_msg, NULL, NULL, NULL, NULL);
	spdk_lvs_opts_init(&opts);
	strncpy(opts.name, "lvs", sizeof(opts.name));
	snprintf(opts.name, sizeof(opts.name), "lvs");

	g_lvserrno = -1;

@@ -527,7 +527,7 @@ lvs_init_destroy_success(void)

	spdk_allocate_thread(_lvol_send_msg, NULL, NULL, NULL, NULL);
	spdk_lvs_opts_init(&opts);
	strncpy(opts.name, "lvs", sizeof(opts.name));
	snprintf(opts.name, sizeof(opts.name), "lvs");

	g_lvserrno = -1;

@@ -575,7 +575,7 @@ lvs_init_opts_success(void)
	g_lvserrno = -1;

	spdk_lvs_opts_init(&opts);
	strncpy(opts.name, "lvs", sizeof(opts.name));
	snprintf(opts.name, sizeof(opts.name), "lvs");
	opts.cluster_sz = 8192;
	rc = spdk_lvs_init(&dev.bs_dev, &opts, lvol_store_op_with_handle_complete, NULL);
	CU_ASSERT(rc == 0);
@@ -730,7 +730,7 @@ lvol_create_destroy_success(void)
	spdk_allocate_thread(_lvol_send_msg, NULL, NULL, NULL, NULL);

	spdk_lvs_opts_init(&opts);
	strncpy(opts.name, "lvs", sizeof(opts.name));
	snprintf(opts.name, sizeof(opts.name), "lvs");

	g_lvserrno = -1;
	rc = spdk_lvs_init(&dev.bs_dev, &opts, lvol_store_op_with_handle_complete, NULL);
@@ -770,7 +770,7 @@ lvol_create_fail(void)
	spdk_allocate_thread(_lvol_send_msg, NULL, NULL, NULL, NULL);

	spdk_lvs_opts_init(&opts);
	strncpy(opts.name, "lvs", sizeof(opts.name));
	snprintf(opts.name, sizeof(opts.name), "lvs");

	g_lvol_store = NULL;
	g_lvserrno = 0;
@@ -817,7 +817,7 @@ lvol_destroy_fail(void)
	spdk_allocate_thread(_lvol_send_msg, NULL, NULL, NULL, NULL);

	spdk_lvs_opts_init(&opts);
	strncpy(opts.name, "lvs", sizeof(opts.name));
	snprintf(opts.name, sizeof(opts.name), "lvs");

	rc = spdk_lvs_init(&dev.bs_dev, &opts, lvol_store_op_with_handle_complete, NULL);
	CU_ASSERT(rc == 0);
@@ -856,7 +856,7 @@ lvol_close_fail(void)
	spdk_allocate_thread(_lvol_send_msg, NULL, NULL, NULL, NULL);

	spdk_lvs_opts_init(&opts);
	strncpy(opts.name, "lvs", sizeof(opts.name));
	snprintf(opts.name, sizeof(opts.name), "lvs");

	rc = spdk_lvs_init(&dev.bs_dev, &opts, lvol_store_op_with_handle_complete, NULL);
	CU_ASSERT(rc == 0);
@@ -893,7 +893,7 @@ lvol_close_success(void)
	spdk_allocate_thread(_lvol_send_msg, NULL, NULL, NULL, NULL);

	spdk_lvs_opts_init(&opts);
	strncpy(opts.name, "lvs", sizeof(opts.name));
	snprintf(opts.name, sizeof(opts.name), "lvs");

	g_lvserrno = -1;
	rc = spdk_lvs_init(&dev.bs_dev, &opts, lvol_store_op_with_handle_complete, NULL);
@@ -931,7 +931,7 @@ lvol_resize(void)
	spdk_allocate_thread(_lvol_send_msg, NULL, NULL, NULL, NULL);

	spdk_lvs_opts_init(&opts);
	strncpy(opts.name, "lvs", sizeof(opts.name));
	snprintf(opts.name, sizeof(opts.name), "lvs");

	g_resize_rc = 0;
	g_lvserrno = -1;
@@ -1009,7 +1009,7 @@ lvs_load(void)

	init_dev(&dev);
	spdk_bs_opts_init(&bs_opts);
	strncpy(bs_opts.bstype.bstype, "LVOLSTORE", SPDK_BLOBSTORE_TYPE_LENGTH);
	snprintf(bs_opts.bstype.bstype, sizeof(bs_opts.bstype.bstype), "LVOLSTORE");
	spdk_bs_init(&dev.bs_dev, &bs_opts, null_cb, NULL);

	spdk_allocate_thread(_lvol_send_msg, NULL, NULL, NULL, NULL);
@@ -1102,7 +1102,7 @@ lvols_load(void)

	init_dev(&dev);
	spdk_bs_opts_init(&bs_opts);
	strncpy(bs_opts.bstype.bstype, "LVOLSTORE", SPDK_BLOBSTORE_TYPE_LENGTH);
	snprintf(bs_opts.bstype.bstype, sizeof(bs_opts.bstype.bstype), "LVOLSTORE");
	spdk_bs_init(&dev.bs_dev, &bs_opts, null_cb, NULL);
	super_blob = calloc(1, sizeof(*super_blob));
	SPDK_CU_ASSERT_FATAL(super_blob != NULL);
@@ -1213,7 +1213,7 @@ lvol_open(void)

	init_dev(&dev);
	spdk_bs_opts_init(&bs_opts);
	strncpy(bs_opts.bstype.bstype, "LVOLSTORE", SPDK_BLOBSTORE_TYPE_LENGTH);
	snprintf(bs_opts.bstype.bstype, sizeof(bs_opts.bstype.bstype), "LVOLSTORE");
	spdk_bs_init(&dev.bs_dev, &bs_opts, null_cb, NULL);
	super_blob = calloc(1, sizeof(*super_blob));
	SPDK_CU_ASSERT_FATAL(super_blob != NULL);
@@ -1312,7 +1312,7 @@ lvol_snapshot(void)
	spdk_allocate_thread(_lvol_send_msg, NULL, NULL, NULL, NULL);

	spdk_lvs_opts_init(&opts);
	strncpy(opts.name, "lvs", sizeof(opts.name));
	snprintf(opts.name, sizeof(opts.name), "lvs");

	g_lvserrno = -1;
	rc = spdk_lvs_init(&dev.bs_dev, &opts, lvol_store_op_with_handle_complete, NULL);
@@ -1363,7 +1363,7 @@ lvol_snapshot_fail(void)
	spdk_allocate_thread(_lvol_send_msg, NULL, NULL, NULL, NULL);

	spdk_lvs_opts_init(&opts);
	strncpy(opts.name, "lvs", sizeof(opts.name));
	snprintf(opts.name, sizeof(opts.name), "lvs");

	g_lvserrno = -1;
	rc = spdk_lvs_init(&dev.bs_dev, &opts, lvol_store_op_with_handle_complete, NULL);
@@ -1431,7 +1431,7 @@ lvol_clone(void)
	spdk_allocate_thread(_lvol_send_msg, NULL, NULL, NULL, NULL);

	spdk_lvs_opts_init(&opts);
	strncpy(opts.name, "lvs", sizeof(opts.name));
	snprintf(opts.name, sizeof(opts.name), "lvs");

	g_lvserrno = -1;
	rc = spdk_lvs_init(&dev.bs_dev, &opts, lvol_store_op_with_handle_complete, NULL);
@@ -1495,7 +1495,7 @@ lvol_clone_fail(void)
	spdk_allocate_thread(_lvol_send_msg, NULL, NULL, NULL, NULL);

	spdk_lvs_opts_init(&opts);
	strncpy(opts.name, "lvs", sizeof(opts.name));
	snprintf(opts.name, sizeof(opts.name), "lvs");

	g_lvserrno = -1;
	rc = spdk_lvs_init(&dev.bs_dev, &opts, lvol_store_op_with_handle_complete, NULL);
@@ -1573,7 +1573,7 @@ lvol_names(void)
	spdk_allocate_thread(_lvol_send_msg, NULL, NULL, NULL, NULL);

	spdk_lvs_opts_init(&opts);
	strncpy(opts.name, "lvs", sizeof(opts.name));
	snprintf(opts.name, sizeof(opts.name), "lvs");

	g_lvserrno = -1;
	g_lvol_store = NULL;
@@ -1650,7 +1650,7 @@ lvol_rename(void)
	spdk_allocate_thread(_lvol_send_msg, NULL, NULL, NULL, NULL);

	spdk_lvs_opts_init(&opts);
	strncpy(opts.name, "lvs", sizeof(opts.name));
	snprintf(opts.name, sizeof(opts.name), "lvs");

	g_lvserrno = -1;
	g_lvol_store = NULL;
@@ -1722,7 +1722,7 @@ lvs_rename(void)
	spdk_allocate_thread(_lvol_send_msg, NULL, NULL, NULL, NULL);

	spdk_lvs_opts_init(&opts);
	strncpy(opts.name, "lvs", SPDK_LVS_NAME_MAX);
	snprintf(opts.name, sizeof(opts.name), "lvs");
	g_lvserrno = -1;
	g_lvol_store = NULL;
	rc = spdk_lvs_init(&dev.bs_dev, &opts, lvol_store_op_with_handle_complete, NULL);
@@ -1732,7 +1732,7 @@ lvs_rename(void)
	lvs = g_lvol_store;

	spdk_lvs_opts_init(&opts);
	strncpy(opts.name, "unimportant_lvs_name", SPDK_LVS_NAME_MAX);
	snprintf(opts.name, sizeof(opts.name), "unimportant_lvs_name");
	g_lvserrno = -1;
	g_lvol_store = NULL;
	rc = spdk_lvs_init(&dev.bs_dev, &opts, lvol_store_op_with_handle_complete, NULL);
@@ -1758,14 +1758,14 @@ lvs_rename(void)

	/* Trying to rename lvs with another rename process started with the same name */
	/* Simulate renaming process in progress */
	strncpy(lvs2->new_name, "another_new_lvs_name", SPDK_LVS_NAME_MAX);
	snprintf(lvs2->new_name, sizeof(lvs2->new_name), "another_new_lvs_name");
	CU_ASSERT_STRING_EQUAL(lvs2->new_name, "another_new_lvs_name");
	/* Start second process */
	spdk_lvs_rename(lvs, "another_new_lvs_name", lvol_store_op_complete, NULL);
	CU_ASSERT(g_lvserrno == -EEXIST);
	CU_ASSERT_STRING_EQUAL(lvs->name, "new_lvs_name");
	/* reverting lvs2 new name to proper value */
	strncpy(lvs2->new_name, "unimportant_lvs_name", SPDK_LVS_NAME_MAX);
	snprintf(lvs2->new_name, sizeof(lvs2->new_name), "unimportant_lvs_name");
	CU_ASSERT_STRING_EQUAL(lvs2->new_name, "unimportant_lvs_name");

	/* Simulate error while lvs rename */
@@ -1800,7 +1800,7 @@ static void lvol_refcnt(void)

	spdk_allocate_thread(_lvol_send_msg, NULL, NULL, NULL, NULL);
	spdk_lvs_opts_init(&opts);
	strncpy(opts.name, "lvs", sizeof(opts.name));
	snprintf(opts.name, sizeof(opts.name), "lvs");

	g_lvserrno = -1;
	rc = spdk_lvs_init(&dev.bs_dev, &opts, lvol_store_op_with_handle_complete, NULL);
@@ -1862,7 +1862,7 @@ lvol_create_thin_provisioned(void)
	spdk_allocate_thread(_lvol_send_msg, NULL, NULL, NULL, NULL);

	spdk_lvs_opts_init(&opts);
	strncpy(opts.name, "lvs", sizeof(opts.name));
	snprintf(opts.name, sizeof(opts.name), "lvs");

	g_lvserrno = -1;
	rc = spdk_lvs_init(&dev.bs_dev, &opts, lvol_store_op_with_handle_complete, NULL);