From 518c2855d51c4c2e79ff32a25d7efd78abf57cf8 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Wed, 12 Nov 2025 14:41:52 +0100 Subject: [SERVER] iscsi: Fix handling of reason_code in logout request Only the lower 7 bits carry the reason code, mask away highest bit. --- src/server/iscsi.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/server/iscsi.c') diff --git a/src/server/iscsi.c b/src/server/iscsi.c index 1b29dbe..b7aacec 100644 --- a/src/server/iscsi.c +++ b/src/server/iscsi.c @@ -2764,8 +2764,11 @@ static int iscsi_connection_handle_logout_req(iscsi_connection *conn, const iscs { iscsi_logout_req_packet *logout_req_pkt = (iscsi_logout_req_packet *) request_pdu->bhs_pkt; - if ( (conn->state == ISCSI_CONNECT_STATE_NEW) || (logout_req_pkt->reason_code != ISCSI_LOGOUT_REQ_REASON_CODE_CLOSE_SESSION) ) + if ( (conn->state == ISCSI_CONNECT_STATE_NEW) + || ((logout_req_pkt->reason_code & ISCSI_LOGOUT_REQ_REASON_CODE_MASK) != ISCSI_LOGOUT_REQ_REASON_CODE_CLOSE_SESSION) ) { + logadd( LOG_DEBUG1, "Invalid logout request in state %d, reason_code %d", conn->state, logout_req_pkt->reason_code ); return ISCSI_CONNECT_PDU_READ_ERR_FATAL; + } iscsi_pdu CLEANUP_PDU response_pdu; if ( !iscsi_connection_pdu_init( &response_pdu, 0, false ) ) -- cgit v1.2.3-55-g7522