Hi Nab,
On 6/13/2014 9:33 AM, Nicholas A. Bellinger wrote:
Hi Tejas,
On Mon, 2014-06-09 at 15:05 +0530, Tejas Vaykole wrote:
Hi,
when i am sending a login request with empty CHAP_I value that is
,"CHAP_I=" i am expecting the login reject.
However,The target accepts the request and sends back the response.
i have attached the pcap for the same.
My machine details:
[root ~]#uname -a
Linux root 3.15.0-rc3+ #1 SMP Mon 19 17:35:27 IST 2014 x86_64 x86_64
x86_64 GNU/Linux
So the 'CHAP_I=' is getting converted to '0' here by simple_strtoul() in
iscsi_target_auth.c:chap_server_compute_md5() code.
Applying the following patch to use kstrtoul() instead, which generates
a -EINVAL and fails the login attempt when 'CHAP_I=' with no value is
received from the initiator.
Please confirm on your end.
I have verified the patch,it handles the this case correctly.
Thanks,
--nab
diff --git a/drivers/target/iscsi/iscsi_target_auth.c b/drivers/target/iscsi/iscsi_target_auth.c
index 19b842c..9430eea 100644
--- a/drivers/target/iscsi/iscsi_target_auth.c
+++ b/drivers/target/iscsi/iscsi_target_auth.c
@@ -174,7 +174,6 @@ static int chap_server_compute_md5(
char *nr_out_ptr,
unsigned int *nr_out_len)
{
- char *endptr;
unsigned long id;
unsigned char id_as_uchar;
unsigned char digest[MD5_SIGNATURE_SIZE];
@@ -320,9 +319,14 @@ static int chap_server_compute_md5(
}
if (type == HEX)
- id = simple_strtoul(&identifier[2], &endptr, 0);
+ ret = kstrtoul(&identifier[2], 0, &id);
else
- id = simple_strtoul(identifier, &endptr, 0);
+ ret = kstrtoul(identifier, 0, &id);
+
+ if (ret < 0) {
+ pr_err("kstrtoul() failed for CHAP identifier: %d\n", ret);
+ goto out;
+ }
if (id > 255) {
pr_err("chap identifier: %lu greater than 255\n", id);
goto out;
--
Thanks and regards.
Tejas Vaykole
Development Engineer.
Calsoft Inc.|Ext- 3169
--
To unsubscribe from this list: send the line "unsubscribe target-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html