From bd4c5edf57c16ae7192bb5bca31562734513311f Mon Sep 17 00:00:00 2001 From: Sebastian Vater Date: Mon, 3 Nov 2025 09:13:25 +0100 Subject: Fixed iSCSI SCSI CDB SERVICE_IN_ACTION_16 endianess conversion error. Finally, added no-strict-aliasing to compiler options. --- CMakeLists.txt | 4 ++++ src/server/iscsi.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0e473fd..35aef20 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -112,6 +112,10 @@ set(CMAKE_C_FLAGS_RELEASE "-Wno-error") set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g -Og -DDEBUG") set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -DNDEBUG") +# set no strict aliasing +set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -fno-strict-aliasing") +set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -fno-strict-aliasing") + if(DNBD3_RELEASE_HARDEN AND CMAKE_BUILD_TYPE MATCHES "Release") # harden builds with specific C flags set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -D_FORTIFY_SOURCE=2 -fstack-protector-all -fstack-clash-protection") diff --git a/src/server/iscsi.c b/src/server/iscsi.c index 835e273..7c04ab6 100644 --- a/src/server/iscsi.c +++ b/src/server/iscsi.c @@ -6102,7 +6102,7 @@ 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; + uint len = iscsi_get_be32(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 -- cgit v1.2.3-55-g7522