The prior strlcpy() replacement of strncpy() here (which was
later replaced with strscpy()) expected pinfo->model_num (and
pinfo->model_description) to be NUL-terminated, but it is possible
it was not, as the code pattern here shows vha->hw->model_number (and
vha->hw->model_desc) being exactly 1 character larger, and the replaced
strncpy() was copying only up to the size of the source character
array. Replace this with memtostr(), which is the unambiguous way to
convert a maybe not-NUL-terminated character array into a NUL-terminated
string.

Fixes: 527e9b704c3d ("scsi: qla2xxx: Use memcpy() and strlcpy() instead of 
strcpy() and strncpy()")
Signed-off-by: Kees Cook <keesc...@chromium.org>
---
Cc: Bart Van Assche <bvanass...@acm.org>
Cc: Nilesh Javali <njav...@marvell.com>
Cc: gr-qlogic-storage-upstr...@marvell.com
Cc: "James E.J. Bottomley" <j...@linux.ibm.com>
Cc: "Martin K. Petersen" <martin.peter...@oracle.com>
Cc: linux-s...@vger.kernel.org
---
 drivers/scsi/qla2xxx/qla_mr.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/scsi/qla2xxx/qla_mr.c b/drivers/scsi/qla2xxx/qla_mr.c
index 083f94e43fba..82a7e21ddc83 100644
--- a/drivers/scsi/qla2xxx/qla_mr.c
+++ b/drivers/scsi/qla2xxx/qla_mr.c
@@ -1909,10 +1909,8 @@ qlafx00_fx_disc(scsi_qla_host_t *vha, fc_port_t *fcport, 
uint16_t fx_type)
        if (fx_type == FXDISC_GET_CONFIG_INFO) {
                struct config_info_data *pinfo =
                    (struct config_info_data *) fdisc->u.fxiocb.rsp_addr;
-               strscpy(vha->hw->model_number, pinfo->model_num,
-                       ARRAY_SIZE(vha->hw->model_number));
-               strscpy(vha->hw->model_desc, pinfo->model_description,
-                       ARRAY_SIZE(vha->hw->model_desc));
+               memtostr(vha->hw->model_number, pinfo->model_num);
+               memtostr(vha->hw->model_desc, pinfo->model_description);
                memcpy(&vha->hw->mr.symbolic_name, pinfo->symbolic_name,
                    sizeof(vha->hw->mr.symbolic_name));
                memcpy(&vha->hw->mr.serial_num, pinfo->serial_num,
-- 
2.34.1


Reply via email to