Merge pull request #447 from lishiao144/master

Fix CHAP_C Encoding and CHAP_R Comparison in CHAP Authentication
This commit is contained in:
Ronnie Sahlberg
2025-05-30 10:47:06 +10:00
committed by GitHub
2 changed files with 5 additions and 3 deletions

View File

@@ -124,7 +124,7 @@ struct iscsi_context {
char target_user[MAX_STRING_SIZE+1]; char target_user[MAX_STRING_SIZE+1];
char target_passwd[MAX_STRING_SIZE+1]; char target_passwd[MAX_STRING_SIZE+1];
int target_chap_i; int target_chap_i;
char target_chap_r[MAX_CHAP_R_SIZE]; unsigned char target_chap_r[MAX_CHAP_R_SIZE];
char error_string[MAX_STRING_SIZE+1]; char error_string[MAX_STRING_SIZE+1];

View File

@@ -937,6 +937,7 @@ iscsi_login_add_chap_response(struct iscsi_context *iscsi, struct iscsi_pdu *pdu
/* bidirectional chap */ /* bidirectional chap */
if (iscsi->target_user[0]) { if (iscsi->target_user[0]) {
char target_chap_c[MAX_CHAP_R_SIZE * 2] = {0}; char target_chap_c[MAX_CHAP_R_SIZE * 2] = {0};
char target_chap_c_hex[MAX_CHAP_R_SIZE * 4 + 1] = { 0 };
iscsi->target_chap_i++; iscsi->target_chap_i++;
snprintf(str, MAX_STRING_SIZE, "CHAP_I=%d", snprintf(str, MAX_STRING_SIZE, "CHAP_I=%d",
@@ -962,6 +963,7 @@ iscsi_login_add_chap_response(struct iscsi_context *iscsi, struct iscsi_pdu *pdu
c = target_chap_c[i]; c = target_chap_c[i];
cc[0] = i2h((c >> 4)&0x0f); cc[0] = i2h((c >> 4)&0x0f);
cc[1] = i2h((c )&0x0f); cc[1] = i2h((c )&0x0f);
memcpy(target_chap_c_hex + i * 2, cc, 2);
if (iscsi_pdu_add_data(iscsi, pdu, &cc[0], 2) != 0) { if (iscsi_pdu_add_data(iscsi, pdu, &cc[0], 2) != 0) {
iscsi_set_error(iscsi, "Out-of-memory: pdu add " iscsi_set_error(iscsi, "Out-of-memory: pdu add "
"data failed."); "data failed.");
@@ -977,7 +979,7 @@ iscsi_login_add_chap_response(struct iscsi_context *iscsi, struct iscsi_pdu *pdu
compute_chap_r(iscsi, iscsi->target_chap_i, compute_chap_r(iscsi, iscsi->target_chap_i,
(unsigned char *)iscsi->target_passwd, (unsigned char *)iscsi->target_passwd,
(unsigned char *)target_chap_c, (unsigned char *)target_chap_c_hex,
(unsigned char *)iscsi->target_chap_r); (unsigned char *)iscsi->target_chap_r);
} }