diff --git a/lib/iscsi/portal_grp.c b/lib/iscsi/portal_grp.c index 24f4458cb..216974dc2 100644 --- a/lib/iscsi/portal_grp.c +++ b/lib/iscsi/portal_grp.c @@ -118,7 +118,7 @@ spdk_iscsi_portal_create(const char *host, const char *port, const char *cpumask assert(host != NULL); assert(port != NULL); - if (strlen(host) > MAX_PORTAL_ADDR) { + if (strlen(host) > MAX_PORTAL_ADDR || strlen(port) > MAX_PORTAL_PORT) { return NULL; } @@ -143,11 +143,7 @@ spdk_iscsi_portal_create(const char *host, const char *port, const char *cpumask memcpy(p->host, host, strlen(host)); } - p->port = strdup(port); - if (!p->port) { - SPDK_ERRLOG("strdup() failed for host\n"); - goto error_out; - } + memcpy(p->port, port, strlen(port)); core_mask = spdk_cpuset_alloc(); if (!core_mask) { @@ -191,7 +187,6 @@ spdk_iscsi_portal_create(const char *host, const char *port, const char *cpumask error_out: spdk_cpuset_free(core_mask); - free(p->port); free(p); return NULL; @@ -208,7 +203,6 @@ spdk_iscsi_portal_destroy(struct spdk_iscsi_portal *p) TAILQ_REMOVE(&g_spdk_iscsi.portal_head, p, g_tailq); pthread_mutex_unlock(&g_spdk_iscsi.mutex); - free(p->port); spdk_cpuset_free(p->cpumask); free(p); diff --git a/lib/iscsi/portal_grp.h b/lib/iscsi/portal_grp.h index 904a4c07e..3aacec09a 100644 --- a/lib/iscsi/portal_grp.h +++ b/lib/iscsi/portal_grp.h @@ -39,13 +39,14 @@ #include "spdk/cpuset.h" #define MAX_PORTAL_ADDR 256 +#define MAX_PORTAL_PORT 32 struct spdk_json_write_ctx; struct spdk_iscsi_portal { struct spdk_iscsi_portal_grp *group; char host[MAX_PORTAL_ADDR + 1]; - char *port; + char port[MAX_PORTAL_PORT + 1]; struct spdk_sock *sock; struct spdk_cpuset *cpumask; struct spdk_poller *acceptor_poller; diff --git a/test/unit/lib/iscsi/tgt_node.c/tgt_node_ut.c b/test/unit/lib/iscsi/tgt_node.c/tgt_node_ut.c index 71280738b..08099658a 100644 --- a/test/unit/lib/iscsi/tgt_node.c/tgt_node_ut.c +++ b/test/unit/lib/iscsi/tgt_node.c/tgt_node_ut.c @@ -390,7 +390,7 @@ node_access_allowed(void) memset(&portal, 0, sizeof(struct spdk_iscsi_portal)); portal.group = &pg; snprintf(portal.host, sizeof(portal.host), "192.168.2.0"); - portal.port = "3260"; + snprintf(portal.port, sizeof(portal.port), "3260"); /* input for UT */ memset(&conn, 0, sizeof(struct spdk_iscsi_conn)); @@ -452,7 +452,7 @@ node_access_denied_by_empty_netmask(void) memset(&portal, 0, sizeof(struct spdk_iscsi_portal)); portal.group = &pg; snprintf(portal.host, sizeof(portal.host), "192.168.2.0"); - portal.port = "3260"; + snprintf(portal.port, sizeof(portal.port), "3260"); /* input for UT */ memset(&conn, 0, sizeof(struct spdk_iscsi_conn)); @@ -533,7 +533,7 @@ node_access_multi_initiator_groups_cases(void) memset(&portal, 0, sizeof(struct spdk_iscsi_portal)); portal.group = &pg; snprintf(portal.host, sizeof(portal.host), IP1); - portal.port = "3260"; + snprintf(portal.port, sizeof(portal.port), "3260"); /* connection initialization */ memset(&conn, 0, sizeof(struct spdk_iscsi_conn));