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: Changpeng 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: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
parent
af034b6de4
commit
e8b6523280
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user