iscsi: Use not malloc'ed but fixed size string for target name and alias
Using malloc'ed string for string in iSCSI target has caused scan-build error. Maximum size of target name is already defined to be MAX_TARGET_NAME, and hence use fixed size string whose size is MAX_TARGET_NAME + 1 for spdk_iscsi_tgt_node::name. Change psdk_iscsi_tgt_node::alias together. This change will reduce the potential malloc failure. Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Change-Id: Iac4cd6e9d60173ddeb68ca21ce712126c13bc3c4 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/459707 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
This commit is contained in:
parent
975e48ae8a
commit
d1961b5e41
@ -1703,7 +1703,7 @@ iscsi_op_login_set_target_info(struct spdk_iscsi_conn *conn,
|
||||
/* declarative parameters */
|
||||
if (target != NULL) {
|
||||
pthread_mutex_lock(&target->mutex);
|
||||
if (target->alias != NULL) {
|
||||
if (target->alias[0] != '\0') {
|
||||
snprintf(buf, sizeof buf, "%s", target->alias);
|
||||
} else {
|
||||
snprintf(buf, sizeof buf, "%s", "");
|
||||
|
@ -638,9 +638,6 @@ _iscsi_tgt_node_destruct(void *cb_arg, int rc)
|
||||
return;
|
||||
}
|
||||
|
||||
free(target->name);
|
||||
free(target->alias);
|
||||
|
||||
pthread_mutex_lock(&g_spdk_iscsi.mutex);
|
||||
iscsi_tgt_node_delete_all_pg_maps(target);
|
||||
pthread_mutex_unlock(&g_spdk_iscsi.mutex);
|
||||
@ -962,14 +959,12 @@ spdk_iscsi_tgt_node_construct(int target_index,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
target = malloc(sizeof(*target));
|
||||
target = calloc(1, sizeof(*target));
|
||||
if (!target) {
|
||||
SPDK_ERRLOG("could not allocate target\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
memset(target, 0, sizeof(*target));
|
||||
|
||||
rc = pthread_mutex_init(&target->mutex, NULL);
|
||||
if (rc != 0) {
|
||||
SPDK_ERRLOG("tgt_node%d: mutex_init() failed\n", target->num);
|
||||
@ -979,22 +974,14 @@ spdk_iscsi_tgt_node_construct(int target_index,
|
||||
|
||||
target->num = target_index;
|
||||
|
||||
target->name = strdup(fullname);
|
||||
if (!target->name) {
|
||||
SPDK_ERRLOG("Could not allocate TargetName\n");
|
||||
iscsi_tgt_node_destruct(target, NULL, NULL);
|
||||
return NULL;
|
||||
}
|
||||
memcpy(target->name, fullname, strlen(fullname));
|
||||
|
||||
if (alias == NULL) {
|
||||
target->alias = NULL;
|
||||
} else {
|
||||
target->alias = strdup(alias);
|
||||
if (!target->alias) {
|
||||
SPDK_ERRLOG("Could not allocate TargetAlias\n");
|
||||
if (alias != NULL) {
|
||||
if (strlen(alias) > MAX_TARGET_NAME) {
|
||||
iscsi_tgt_node_destruct(target, NULL, NULL);
|
||||
return NULL;
|
||||
}
|
||||
memcpy(target->alias, alias, strlen(alias));
|
||||
}
|
||||
|
||||
target->dev = spdk_scsi_dev_construct(fullname, bdev_name_list, lun_id_list, num_luns,
|
||||
@ -1546,7 +1533,7 @@ iscsi_tgt_node_info_json(struct spdk_iscsi_tgt_node *target,
|
||||
|
||||
spdk_json_write_named_string(w, "name", target->name);
|
||||
|
||||
if (target->alias) {
|
||||
if (target->alias[0] != '\0') {
|
||||
spdk_json_write_named_string(w, "alias_name", target->alias);
|
||||
}
|
||||
|
||||
|
@ -37,6 +37,8 @@
|
||||
|
||||
#include "spdk/stdinc.h"
|
||||
|
||||
#include "iscsi/iscsi.h"
|
||||
|
||||
struct spdk_iscsi_conn;
|
||||
struct spdk_iscsi_init_grp;
|
||||
struct spdk_iscsi_portal_grp;
|
||||
@ -62,8 +64,8 @@ struct spdk_iscsi_pg_map {
|
||||
|
||||
struct spdk_iscsi_tgt_node {
|
||||
int num;
|
||||
char *name;
|
||||
char *alias;
|
||||
char name[MAX_TARGET_NAME + 1];
|
||||
char alias[MAX_TARGET_NAME + 1];
|
||||
|
||||
pthread_mutex_t mutex;
|
||||
|
||||
|
@ -376,7 +376,7 @@ node_access_allowed(void)
|
||||
|
||||
/* target initialization */
|
||||
memset(&tgtnode, 0, sizeof(struct spdk_iscsi_tgt_node));
|
||||
tgtnode.name = "iqn.2017-10.spdk.io:0001";
|
||||
snprintf(tgtnode.name, sizeof(tgtnode.name), "iqn.2017-10.spdk.io:0001");
|
||||
TAILQ_INIT(&tgtnode.pg_map_head);
|
||||
|
||||
memset(&scsi_dev, 0, sizeof(struct spdk_scsi_dev));
|
||||
@ -438,7 +438,7 @@ node_access_denied_by_empty_netmask(void)
|
||||
|
||||
/* target initialization */
|
||||
memset(&tgtnode, 0, sizeof(struct spdk_iscsi_tgt_node));
|
||||
tgtnode.name = "iqn.2017-10.spdk.io:0001";
|
||||
snprintf(tgtnode.name, sizeof(tgtnode.name), "iqn.2017-10.spdk.io:0001");
|
||||
TAILQ_INIT(&tgtnode.pg_map_head);
|
||||
|
||||
memset(&scsi_dev, 0, sizeof(struct spdk_scsi_dev));
|
||||
@ -491,7 +491,7 @@ node_access_multi_initiator_groups_cases(void)
|
||||
|
||||
/* target initialization */
|
||||
memset(&tgtnode, 0, sizeof(struct spdk_iscsi_tgt_node));
|
||||
tgtnode.name = IQN1;
|
||||
snprintf(tgtnode.name, sizeof(tgtnode.name), IQN1);
|
||||
TAILQ_INIT(&tgtnode.pg_map_head);
|
||||
|
||||
memset(&scsi_dev, 0, sizeof(struct spdk_scsi_dev));
|
||||
|
Loading…
Reference in New Issue
Block a user