scsi: qla2xxx: Use memcpy() and strlcpy() instead of strcpy() and strncpy()

This patch makes the string manipulation code easier to verify.

Cc: Himanshu Madhani <hmadhani@marvell.com>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Tested-by: Himanshu Madhani <hmadhani@marvell.com>
Reviewed-by: Himanshu Madhani <hmadhani@marvell.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
Bart Van Assche 2019-08-08 20:01:56 -07:00 committed by Martin K. Petersen
parent dc6d6d34e1
commit 527e9b704c
2 changed files with 14 additions and 10 deletions

View File

@ -4438,7 +4438,7 @@ qla2x00_set_model_info(scsi_qla_host_t *vha, uint8_t *model, size_t len,
if (len > sizeof(zero)) if (len > sizeof(zero))
len = sizeof(zero); len = sizeof(zero);
if (memcmp(model, &zero, len) != 0) { if (memcmp(model, &zero, len) != 0) {
strncpy(ha->model_number, model, len); memcpy(ha->model_number, model, len);
st = en = ha->model_number; st = en = ha->model_number;
en += len - 1; en += len - 1;
while (en > st) { while (en > st) {
@ -4451,21 +4451,23 @@ qla2x00_set_model_info(scsi_qla_host_t *vha, uint8_t *model, size_t len,
if (use_tbl && if (use_tbl &&
ha->pdev->subsystem_vendor == PCI_VENDOR_ID_QLOGIC && ha->pdev->subsystem_vendor == PCI_VENDOR_ID_QLOGIC &&
index < QLA_MODEL_NAMES) index < QLA_MODEL_NAMES)
strncpy(ha->model_desc, strlcpy(ha->model_desc,
qla2x00_model_name[index * 2 + 1], qla2x00_model_name[index * 2 + 1],
sizeof(ha->model_desc) - 1); sizeof(ha->model_desc));
} else { } else {
index = (ha->pdev->subsystem_device & 0xff); index = (ha->pdev->subsystem_device & 0xff);
if (use_tbl && if (use_tbl &&
ha->pdev->subsystem_vendor == PCI_VENDOR_ID_QLOGIC && ha->pdev->subsystem_vendor == PCI_VENDOR_ID_QLOGIC &&
index < QLA_MODEL_NAMES) { index < QLA_MODEL_NAMES) {
strcpy(ha->model_number, strlcpy(ha->model_number,
qla2x00_model_name[index * 2]); qla2x00_model_name[index * 2],
strncpy(ha->model_desc, sizeof(ha->model_number));
strlcpy(ha->model_desc,
qla2x00_model_name[index * 2 + 1], qla2x00_model_name[index * 2 + 1],
sizeof(ha->model_desc) - 1); sizeof(ha->model_desc));
} else { } else {
strcpy(ha->model_number, def); strlcpy(ha->model_number, def,
sizeof(ha->model_number));
} }
} }
if (IS_FWI2_CAPABLE(ha)) if (IS_FWI2_CAPABLE(ha))

View File

@ -1939,8 +1939,10 @@ qlafx00_fx_disc(scsi_qla_host_t *vha, fc_port_t *fcport, uint16_t fx_type)
if (fx_type == FXDISC_GET_CONFIG_INFO) { if (fx_type == FXDISC_GET_CONFIG_INFO) {
struct config_info_data *pinfo = struct config_info_data *pinfo =
(struct config_info_data *) fdisc->u.fxiocb.rsp_addr; (struct config_info_data *) fdisc->u.fxiocb.rsp_addr;
strcpy(vha->hw->model_number, pinfo->model_num); strlcpy(vha->hw->model_number, pinfo->model_num,
strcpy(vha->hw->model_desc, pinfo->model_description); ARRAY_SIZE(vha->hw->model_number));
strlcpy(vha->hw->model_desc, pinfo->model_description,
ARRAY_SIZE(vha->hw->model_desc));
memcpy(&vha->hw->mr.symbolic_name, pinfo->symbolic_name, memcpy(&vha->hw->mr.symbolic_name, pinfo->symbolic_name,
sizeof(vha->hw->mr.symbolic_name)); sizeof(vha->hw->mr.symbolic_name));
memcpy(&vha->hw->mr.serial_num, pinfo->serial_num, memcpy(&vha->hw->mr.serial_num, pinfo->serial_num,