Commit e8b65232 authored by Changpeng Liu's avatar Changpeng Liu
Browse files

iscsi: check the length of initiator/target name



According to the RFC3720, the length of initiator name and
target name should not larger than 223 bytes, while here,
add a check for initiator/target name.

Change-Id: I1517a4c4e1b0a944b239665f38f5dfb46f0075d2
Signed-off-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-on: https://review.gerrithub.io/433797


Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
parent af034b6d
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -83,6 +83,11 @@ spdk_iscsi_init_grp_add_initiator(struct spdk_iscsi_init_grp *ig, char *name)
		return -EPERM;
	}

	if (strlen(name) > MAX_INITIATOR_NAME) {
		SPDK_ERRLOG("Initiator Name is larger than 223 bytes\n");
		return -EINVAL;
	}

	iname = spdk_iscsi_init_grp_find_initiator(ig, name);
	if (iname != NULL) {
		return -EEXIST;
+2 −2
Original line number Diff line number Diff line
@@ -1631,7 +1631,7 @@ spdk_iscsi_op_login_phase_none(struct spdk_iscsi_conn *conn,
			       int alloc_len, int cid)
{
	enum session_type session_type;
	char initiator_port_name[MAX_INITIATOR_NAME];
	char initiator_port_name[MAX_INITIATOR_PORT_NAME];
	struct iscsi_bhs_login_rsp *rsph;
	struct spdk_iscsi_tgt_node *target = NULL;
	int rc = 0;
@@ -1641,7 +1641,7 @@ spdk_iscsi_op_login_phase_none(struct spdk_iscsi_conn *conn,
	conn->dev = NULL;

	rc = spdk_iscsi_op_login_initialize_port(conn, rsp_pdu,
			initiator_port_name, MAX_INITIATOR_NAME, params);
			initiator_port_name, MAX_INITIATOR_PORT_NAME, params);
	if (rc < 0) {
		return rc;
	}
+3 −2
Original line number Diff line number Diff line
@@ -51,8 +51,9 @@
#define SPDK_ISCSI_DEFAULT_NODEBASE "iqn.2016-06.io.spdk"

#define DEFAULT_MAXR2T 4
#define MAX_INITIATOR_NAME 256
#define MAX_TARGET_NAME 256
#define MAX_INITIATOR_PORT_NAME 256
#define MAX_INITIATOR_NAME 223
#define MAX_TARGET_NAME 223

#define MAX_PORTAL 1024
#define MAX_INITIATOR 256
+5 −0
Original line number Diff line number Diff line
@@ -792,6 +792,11 @@ spdk_check_iscsi_name(const char *name)
	const unsigned char *up = (const unsigned char *) name;
	size_t n;

	/* valid iSCSI name no larger than 223 bytes */
	if (strlen(name) > MAX_TARGET_NAME) {
		return -1;
	}

	/* valid iSCSI name? */
	for (n = 0; up[n] != 0; n++) {
		if (up[n] > 0x00U && up[n] <= 0x2cU) {