|
@@ -146,6 +146,7 @@ static int chap_server_compute_md5(
|
|
|
unsigned char client_digest[MD5_SIGNATURE_SIZE];
|
|
|
unsigned char server_digest[MD5_SIGNATURE_SIZE];
|
|
|
unsigned char chap_n[MAX_CHAP_N_SIZE], chap_r[MAX_RESPONSE_LENGTH];
|
|
|
+ size_t compare_len;
|
|
|
struct iscsi_chap *chap = conn->auth_protocol;
|
|
|
struct crypto_hash *tfm;
|
|
|
struct hash_desc desc;
|
|
@@ -184,7 +185,9 @@ static int chap_server_compute_md5(
|
|
|
goto out;
|
|
|
}
|
|
|
|
|
|
- if (memcmp(chap_n, auth->userid, strlen(auth->userid)) != 0) {
|
|
|
+ /* Include the terminating NULL in the compare */
|
|
|
+ compare_len = strlen(auth->userid) + 1;
|
|
|
+ if (strncmp(chap_n, auth->userid, compare_len) != 0) {
|
|
|
pr_err("CHAP_N values do not match!\n");
|
|
|
goto out;
|
|
|
}
|