Эх сурвалжийг харах

iscsi-target: Convert chap_server_compute_md5 to use kstrtoul

This patch converts chap_server_compute_md5() from simple_strtoul() to
kstrtoul usage().

This addresses the case where a empty 'CHAP_I=' key value received during
mutual authentication would be converted to a '0' by simple_strtoul(),
instead of failing the login attempt.

Reported-by: Tejas Vaykole <tejas.vaykole@calsoftinc.com>
Tested-by: Tejas Vaykole <tejas.vaykole@calsoftinc.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Nicholas Bellinger 11 жил өмнө
parent
commit
b06eef6eab

+ 7 - 3
drivers/target/iscsi/iscsi_target_auth.c

@@ -174,7 +174,6 @@ static int chap_server_compute_md5(
 	char *nr_out_ptr,
 	char *nr_out_ptr,
 	unsigned int *nr_out_len)
 	unsigned int *nr_out_len)
 {
 {
-	char *endptr;
 	unsigned long id;
 	unsigned long id;
 	unsigned char id_as_uchar;
 	unsigned char id_as_uchar;
 	unsigned char digest[MD5_SIGNATURE_SIZE];
 	unsigned char digest[MD5_SIGNATURE_SIZE];
@@ -320,9 +319,14 @@ static int chap_server_compute_md5(
 	}
 	}
 
 
 	if (type == HEX)
 	if (type == HEX)
-		id = simple_strtoul(&identifier[2], &endptr, 0);
+		ret = kstrtoul(&identifier[2], 0, &id);
 	else
 	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) {
 	if (id > 255) {
 		pr_err("chap identifier: %lu greater than 255\n", id);
 		pr_err("chap identifier: %lu greater than 255\n", id);
 		goto out;
 		goto out;