From cacc144a291fa572d91ded9c0daab598db75db26 Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Tue, 6 Oct 2015 16:18:13 -0700 Subject: [PATCH] test-tool: Initialize parameter buffers This patch avoids that Valgrind reports that an uninitialized buffer is passed to writev(): Syscall param writev(vector[...]) points to uninitialised byte(s) at 0x5557D07: writev (in /lib64/libc-2.19.so) by 0x5269BFD: iscsi_iovector_readv_writev (socket.c:509) by 0x526A7A9: iscsi_write_to_socket (socket.c:727) by 0x526AE47: iscsi_service (socket.c:888) by 0x526B632: event_loop (sync.c:67) by 0x526D925: iscsi_scsi_command_sync (sync.c:1223) by 0x405970: send_scsi_command (iscsi-support.c:276) by 0x40B190: extendedcopy (iscsi-support.c:2673) by 0x40E9FE: test_extendedcopy_param (test_extendedcopy_param.c:63) by 0x503E260: ??? (in /usr/lib64/libcunit.so.1.0.1) by 0x503E56E: ??? (in /usr/lib64/libcunit.so.1.0.1) by 0x503E8A5: CU_run_all_tests (in /usr/lib64/libcunit.so.1.0.1) Address 0xffefff864 is on thread 1's stack in frame #8, created by test_extendedcopy_param (test_extendedcopy_param.c:31) Signed-off-by: Bart Van Assche --- test-tool/test_extendedcopy_descr_limits.c | 1 + test-tool/test_extendedcopy_descr_type.c | 1 + test-tool/test_extendedcopy_param.c | 1 + test-tool/test_extendedcopy_simple.c | 1 + test-tool/test_extendedcopy_validate_seg_descr.c | 1 + test-tool/test_extendedcopy_validate_tgt_descr.c | 1 + test-tool/test_receive_copy_results_copy_status.c | 1 + test-tool/test_writeatomic16_beyond_eol.c | 5 +++-- test-tool/test_writeatomic16_simple.c | 4 +++- test-tool/test_writeatomic16_wrprotect.c | 1 + 10 files changed, 14 insertions(+), 3 deletions(-) diff --git a/test-tool/test_extendedcopy_descr_limits.c b/test-tool/test_extendedcopy_descr_limits.c index e2cf59e..24e9cbf 100644 --- a/test-tool/test_extendedcopy_descr_limits.c +++ b/test-tool/test_extendedcopy_descr_limits.c @@ -82,6 +82,7 @@ test_extendedcopy_descr_limits(void) get_desc_len(BLK_TO_BLK_SEG_DESCR); data.data = alloca(alloc_len); xcopybuf = data.data; + memset(xcopybuf, 0, alloc_len); logging(LOG_VERBOSE, "Test sending more than supported target descriptors"); diff --git a/test-tool/test_extendedcopy_descr_type.c b/test-tool/test_extendedcopy_descr_type.c index 28c0572..74e134e 100644 --- a/test-tool/test_extendedcopy_descr_type.c +++ b/test-tool/test_extendedcopy_descr_type.c @@ -64,6 +64,7 @@ test_extendedcopy_descr_type(void) get_desc_len(BLK_TO_BLK_SEG_DESCR); data.data = alloca(alloc_len); xcopybuf = data.data; + memset(xcopybuf, 0, alloc_len); logging(LOG_VERBOSE, "Send Fibre Channel N_Port_Name target descriptor"); diff --git a/test-tool/test_extendedcopy_param.c b/test-tool/test_extendedcopy_param.c index ee5d4db..d6e251e 100644 --- a/test-tool/test_extendedcopy_param.c +++ b/test-tool/test_extendedcopy_param.c @@ -44,6 +44,7 @@ test_extendedcopy_param(void) get_desc_len(BLK_TO_BLK_SEG_DESCR); data.data = alloca(data.size); xcopybuf = data.data; + memset(xcopybuf, 0, data.size); offset += populate_tgt_desc(xcopybuf+offset, IDENT_DESCR_TGT_DESCR, LU_ID_TYPE_LUN, 0, 0, 0, 0, sd); diff --git a/test-tool/test_extendedcopy_simple.c b/test-tool/test_extendedcopy_simple.c index f40128a..aaa283a 100644 --- a/test-tool/test_extendedcopy_simple.c +++ b/test-tool/test_extendedcopy_simple.c @@ -58,6 +58,7 @@ test_extendedcopy_simple(void) get_desc_len(BLK_TO_BLK_SEG_DESCR); data.data = alloca(data.size); xcopybuf = data.data; + memset(xcopybuf, 0, data.size); /* Initialize target descriptor list with one target descriptor */ offset += populate_tgt_desc(xcopybuf+offset, IDENT_DESCR_TGT_DESCR, diff --git a/test-tool/test_extendedcopy_validate_seg_descr.c b/test-tool/test_extendedcopy_validate_seg_descr.c index 36208f7..51a0648 100644 --- a/test-tool/test_extendedcopy_validate_seg_descr.c +++ b/test-tool/test_extendedcopy_validate_seg_descr.c @@ -44,6 +44,7 @@ test_extendedcopy_validate_seg_descr(void) get_desc_len(BLK_TO_BLK_SEG_DESCR); data.data = alloca(data.size); xcopybuf = data.data; + memset(xcopybuf, 0, data.size); logging(LOG_VERBOSE, "Send invalid target descriptor index"); offset += populate_tgt_desc(xcopybuf+offset, IDENT_DESCR_TGT_DESCR, diff --git a/test-tool/test_extendedcopy_validate_tgt_descr.c b/test-tool/test_extendedcopy_validate_tgt_descr.c index ec197c7..fc9c86a 100644 --- a/test-tool/test_extendedcopy_validate_tgt_descr.c +++ b/test-tool/test_extendedcopy_validate_tgt_descr.c @@ -44,6 +44,7 @@ test_extendedcopy_validate_tgt_descr(void) get_desc_len(BLK_TO_BLK_SEG_DESCR); data.data = alloca(data.size); xcopybuf = data.data; + memset(xcopybuf, 0, data.size); logging(LOG_VERBOSE, "Unsupported LU_ID TYPE"); /* Unsupported LU ID TYPE */ diff --git a/test-tool/test_receive_copy_results_copy_status.c b/test-tool/test_receive_copy_results_copy_status.c index d76d01e..05404b9 100644 --- a/test-tool/test_receive_copy_results_copy_status.c +++ b/test-tool/test_receive_copy_results_copy_status.c @@ -57,6 +57,7 @@ test_receive_copy_results_copy_status(void) get_desc_len(BLK_TO_BLK_SEG_DESCR); data.data = alloca(data.size); xcopybuf = data.data; + memset(xcopybuf, 0, data.size); /* Initialize target descriptor list with one target descriptor */ offset += populate_tgt_desc(xcopybuf+offset, IDENT_DESCR_TGT_DESCR, diff --git a/test-tool/test_writeatomic16_beyond_eol.c b/test-tool/test_writeatomic16_beyond_eol.c index 5308d72..5e27b0b 100644 --- a/test-tool/test_writeatomic16_beyond_eol.c +++ b/test-tool/test_writeatomic16_beyond_eol.c @@ -29,7 +29,8 @@ void test_writeatomic16_beyond_eol(void) { int align, i, gran, ret; - unsigned char *buf = alloca(256 * 2 * block_size); + const size_t bufsz = 256 * 2 * block_size; + unsigned char *buf = alloca(bufsz); CHECK_FOR_DATALOSS; @@ -42,6 +43,7 @@ test_writeatomic16_beyond_eol(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); + memset(buf, 0xa6, bufsz); align = inq_bl->atomic_align ? inq_bl->atomic_align : 1; gran = inq_bl->atomic_gran ? inq_bl->atomic_gran : 1; ret = writeatomic16(sd, 0, @@ -56,7 +58,6 @@ test_writeatomic16_beyond_eol(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEATOMIC16 1-256 blocks blocks beyond the end"); - memset(buf, 0xa6, 256 * block_size); for (i = gran; i <= 256; i += gran) { if (maximum_transfer_length && maximum_transfer_length < i) { break; diff --git a/test-tool/test_writeatomic16_simple.c b/test-tool/test_writeatomic16_simple.c index 45a30d3..b197d02 100644 --- a/test-tool/test_writeatomic16_simple.c +++ b/test-tool/test_writeatomic16_simple.c @@ -30,7 +30,8 @@ void test_writeatomic16_simple(void) { int i, gran, ret; - unsigned char *buf = alloca(256 * block_size); + const size_t bufsz = 256 * block_size; + unsigned char *buf = alloca(bufsz); CHECK_FOR_DATALOSS; @@ -43,6 +44,7 @@ test_writeatomic16_simple(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); + memset(buf, 0, bufsz); gran = inq_bl->atomic_gran ? inq_bl->atomic_gran : 1; ret = writeatomic16(sd, 0, block_size * gran, diff --git a/test-tool/test_writeatomic16_wrprotect.c b/test-tool/test_writeatomic16_wrprotect.c index 900e295..b09d5e4 100644 --- a/test-tool/test_writeatomic16_wrprotect.c +++ b/test-tool/test_writeatomic16_wrprotect.c @@ -43,6 +43,7 @@ test_writeatomic16_wrprotect(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); gran = inq_bl->atomic_gran ? inq_bl->atomic_gran : 1; + memset(buf, 0, block_size); ret = writeatomic16(sd, 0, block_size * gran, block_size, 0, 0, 0, 0, buf,