Commit d4f75b56 authored by Roland Dreier's avatar Roland Dreier Committed by Nicholas Bellinger

tcm_qla2xxx: Handle malformed wwn strings properly

If we make a variable an unsigned int and then expect it to be < 0 on
a bad character, we're going to have a bad time.  Fix the tcm_qla2xxx
code to actually notice if hex_to_bin() returns a negative variable.

This was detected by the compiler warning:

    scsi/qla2xxx/tcm_qla2xxx.c: In function ‘tcm_qla2xxx_npiv_extract_wwn’:
    scsi/qla2xxx/tcm_qla2xxx.c:148:3: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]
Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
parent 9389c3c9
...@@ -137,13 +137,15 @@ static char *tcm_qla2xxx_get_fabric_name(void) ...@@ -137,13 +137,15 @@ static char *tcm_qla2xxx_get_fabric_name(void)
*/ */
static int tcm_qla2xxx_npiv_extract_wwn(const char *ns, u64 *nm) static int tcm_qla2xxx_npiv_extract_wwn(const char *ns, u64 *nm)
{ {
unsigned int i, j, value; unsigned int i, j;
u8 wwn[8]; u8 wwn[8];
memset(wwn, 0, sizeof(wwn)); memset(wwn, 0, sizeof(wwn));
/* Validate and store the new name */ /* Validate and store the new name */
for (i = 0, j = 0; i < 16; i++) { for (i = 0, j = 0; i < 16; i++) {
int value;
value = hex_to_bin(*ns++); value = hex_to_bin(*ns++);
if (value >= 0) if (value >= 0)
j = (j << 4) | value; j = (j << 4) | value;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment