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>
This commit is contained in:
Nicholas Bellinger 2014-06-13 04:05:16 +00:00
parent a497c3ba1d
commit b06eef6eab
1 changed files with 7 additions and 3 deletions

View File

@ -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;