summaryrefslogtreecommitdiffstats
path: root/src/net/tcp/iscsi.c
diff options
context:
space:
mode:
authorMichael Brown2006-12-21 19:38:24 +0100
committerMichael Brown2006-12-21 19:38:24 +0100
commitd6f9152bfa10d0ba9da2d06ebfa9938517bd5251 (patch)
tree2b6a260e310eed88eca61d2185bc6a3e82a9cf72 /src/net/tcp/iscsi.c
parentWhen login fails, leave the session open but not in full feature (diff)
downloadipxe-d6f9152bfa10d0ba9da2d06ebfa9938517bd5251.tar.gz
ipxe-d6f9152bfa10d0ba9da2d06ebfa9938517bd5251.tar.xz
ipxe-d6f9152bfa10d0ba9da2d06ebfa9938517bd5251.zip
Avoid null pointer dereferences when no username/password specified.
Diffstat (limited to 'src/net/tcp/iscsi.c')
-rw-r--r--src/net/tcp/iscsi.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/net/tcp/iscsi.c b/src/net/tcp/iscsi.c
index 4897f1e2..d38c20e7 100644
--- a/src/net/tcp/iscsi.c
+++ b/src/net/tcp/iscsi.c
@@ -403,7 +403,8 @@ static int iscsi_build_login_request_strings ( struct iscsi_session *iscsi,
used += ssnprintf ( data + used, len - used, "CHAP_A=5%c", 0 );
}
- if ( iscsi->status & ISCSI_STATUS_STRINGS_CHAP_RESPONSE ) {
+ if ( ( iscsi->status & ISCSI_STATUS_STRINGS_CHAP_RESPONSE ) &&
+ iscsi->username ) {
used += ssnprintf ( data + used, len - used,
"CHAP_N=%s%cCHAP_R=0x",
iscsi->username, 0 );
@@ -572,8 +573,10 @@ static void iscsi_handle_chap_i_value ( struct iscsi_session *iscsi,
* challenge.
*/
chap_set_identifier ( &iscsi->chap, identifier );
- chap_update ( &iscsi->chap, iscsi->password,
- strlen ( iscsi->password ) );
+ if ( iscsi->password ) {
+ chap_update ( &iscsi->chap, iscsi->password,
+ strlen ( iscsi->password ) );
+ }
}
/**