summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2025-10-31 14:00:31 +0100
committerSimon Rettberg2025-10-31 14:00:31 +0100
commitdc9e8b7aa1f739a9be85e65a7cef48accb739d30 (patch)
tree79e8728728d204655f7e094e0adf13e62e9c071d
parent[SERVER] iscsi: Rename constant to reflect it means LOGICAL block size (diff)
downloaddnbd3-dc9e8b7aa1f739a9be85e65a7cef48accb739d30.tar.gz
dnbd3-dc9e8b7aa1f739a9be85e65a7cef48accb739d30.tar.xz
dnbd3-dc9e8b7aa1f739a9be85e65a7cef48accb739d30.zip
[SERVER] iscsi: Fix endianness bug
-rw-r--r--src/server/iscsi.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/src/server/iscsi.c b/src/server/iscsi.c
index 95ce1ec..4af1e54 100644
--- a/src/server/iscsi.c
+++ b/src/server/iscsi.c
@@ -1159,14 +1159,10 @@ static int iscsi_scsi_emu_block_process(iscsi_scsi_task *scsi_task)
buf->reserved[0] = 0ULL;
buf->reserved[1] = 0ULL;
- uint len = cdb_servce_in_action_16->alloc_len;
-
- if ( len > sizeof(struct iscsi_scsi_service_action_in_16_parameter_data_packet) ) {
- len = sizeof(struct iscsi_scsi_service_action_in_16_parameter_data_packet); // TODO: Check whether scatter data is required
- }
+ const uint alloc_len = iscsi_get_be32( cdb_servce_in_action_16->alloc_len );
scsi_task->buf = (uint8_t *) buf;
- scsi_task->len = len;
+ scsi_task->len = MIN( alloc_len, sizeof(*buf) );
scsi_task->status = ISCSI_SCSI_STATUS_GOOD;
break;