iscsi: Use not malloc'ed but fixed size string for portal porta number
Using malloc'ed string for string in iSCSI target has caused scan-build error. Define maximum port number of portal to be 32 and use fixed size string whose size is 33 for spdk_iscsi_portal_grp::port. This change will reduce the potential malloc failure. Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Change-Id: Ie1fcdbd45ce000a9c1c53761195697555b8d030a Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/459709 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
8f64724e86
commit
f341e69a50
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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));
|
||||
|
Loading…
Reference in New Issue
Block a user