diff options
author | Dan Carpenter <error27@gmail.com> | 2011-06-15 13:03:05 -0400 |
---|---|---|
committer | Nicholas Bellinger <nab@linux-iscsi.org> | 2011-06-23 20:08:11 -0400 |
commit | 60d645a4e9e7e7ddc20e534fea82aa4e6947f911 (patch) | |
tree | 656848db8b14b92993df040058df24ce7012cb8b /drivers/target/loopback | |
parent | 5eff5be0b1993f4291f2b8c6d035b408010f96c5 (diff) |
target: Fix incorrect strlen() NULL terminator checks
This patch fixes a number of cases in target core using an incorrectly
if (strlen(foo) > SOME_MAX_SIZE)
As strlen() returns the number of characters in the string not counting
the NULL character at the end. So if you do something like:
char buf[10];
if (strlen("0123456789") > 10)
return -ETOOLONG;
snprintf(buf, 10, "0123456789");
printf("%s\n", buf);
then the last "9" gets chopped off and only "012345678" is printed.
Plus I threw in one small related cleanup.
Signed-off-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'drivers/target/loopback')
-rw-r--r-- | drivers/target/loopback/tcm_loop.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/target/loopback/tcm_loop.c b/drivers/target/loopback/tcm_loop.c index d4fee2a9d66a..70c2e7fa6664 100644 --- a/drivers/target/loopback/tcm_loop.c +++ b/drivers/target/loopback/tcm_loop.c | |||
@@ -1143,7 +1143,7 @@ static ssize_t tcm_loop_tpg_store_nexus( | |||
1143 | * the fabric protocol_id set in tcm_loop_make_scsi_hba(), and call | 1143 | * the fabric protocol_id set in tcm_loop_make_scsi_hba(), and call |
1144 | * tcm_loop_make_nexus() | 1144 | * tcm_loop_make_nexus() |
1145 | */ | 1145 | */ |
1146 | if (strlen(page) > TL_WWN_ADDR_LEN) { | 1146 | if (strlen(page) >= TL_WWN_ADDR_LEN) { |
1147 | printk(KERN_ERR "Emulated NAA Sas Address: %s, exceeds" | 1147 | printk(KERN_ERR "Emulated NAA Sas Address: %s, exceeds" |
1148 | " max: %d\n", page, TL_WWN_ADDR_LEN); | 1148 | " max: %d\n", page, TL_WWN_ADDR_LEN); |
1149 | return -EINVAL; | 1149 | return -EINVAL; |
@@ -1324,7 +1324,7 @@ struct se_wwn *tcm_loop_make_scsi_hba( | |||
1324 | return ERR_PTR(-EINVAL); | 1324 | return ERR_PTR(-EINVAL); |
1325 | 1325 | ||
1326 | check_len: | 1326 | check_len: |
1327 | if (strlen(name) > TL_WWN_ADDR_LEN) { | 1327 | if (strlen(name) >= TL_WWN_ADDR_LEN) { |
1328 | printk(KERN_ERR "Emulated NAA %s Address: %s, exceeds" | 1328 | printk(KERN_ERR "Emulated NAA %s Address: %s, exceeds" |
1329 | " max: %d\n", name, tcm_loop_dump_proto_id(tl_hba), | 1329 | " max: %d\n", name, tcm_loop_dump_proto_id(tl_hba), |
1330 | TL_WWN_ADDR_LEN); | 1330 | TL_WWN_ADDR_LEN); |