From 4ccc0f5ea28ba2025549cf8ece4c2ec33ce59ba6 Mon Sep 17 00:00:00 2001 From: Edgar Gabriel Date: Wed, 10 Sep 2014 21:59:45 +0000 Subject: [PATCH] the length of the iov array should be limited to IOV_MAX, which is defined in limits.h This commit was SVN r32706. --- ompi/mca/fbtl/posix/fbtl_posix_preadv.c | 8 +++++--- ompi/mca/fbtl/posix/fbtl_posix_pwritev.c | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/ompi/mca/fbtl/posix/fbtl_posix_preadv.c b/ompi/mca/fbtl/posix/fbtl_posix_preadv.c index f9ed515eaa..76b9ed1dfc 100644 --- a/ompi/mca/fbtl/posix/fbtl_posix_preadv.c +++ b/ompi/mca/fbtl/posix/fbtl_posix_preadv.c @@ -22,6 +22,7 @@ #include "mpi.h" #include +#include #include "ompi/constants.h" #include "ompi/mca/fbtl/fbtl.h" @@ -65,9 +66,10 @@ ssize_t mca_fbtl_posix_preadv (mca_io_ompio_file_t *fh ) } if (fh->f_num_of_io_entries != i+1) { - if (((OMPI_MPI_OFFSET_TYPE)(intptr_t)fh->f_io_array[i].offset + - (OPAL_PTRDIFF_TYPE)fh->f_io_array[i].length) == - (OMPI_MPI_OFFSET_TYPE)(intptr_t)fh->f_io_array[i+1].offset) { + if (((((OMPI_MPI_OFFSET_TYPE)(intptr_t)fh->f_io_array[i].offset + + (OPAL_PTRDIFF_TYPE)fh->f_io_array[i].length) == + (OMPI_MPI_OFFSET_TYPE)(intptr_t)fh->f_io_array[i+1].offset)) && + (iov_count < IOV_MAX ) ){ iov[iov_count].iov_base = fh->f_io_array[i+1].memory_address; iov[iov_count].iov_len = fh->f_io_array[i+1].length; diff --git a/ompi/mca/fbtl/posix/fbtl_posix_pwritev.c b/ompi/mca/fbtl/posix/fbtl_posix_pwritev.c index c654689f13..e14410df30 100644 --- a/ompi/mca/fbtl/posix/fbtl_posix_pwritev.c +++ b/ompi/mca/fbtl/posix/fbtl_posix_pwritev.c @@ -24,6 +24,7 @@ #include "mpi.h" #include #include +#include #include "ompi/constants.h" #include "ompi/mca/fbtl/fbtl.h" @@ -67,9 +68,10 @@ ssize_t mca_fbtl_posix_pwritev(mca_io_ompio_file_t *fh ) } if (fh->f_num_of_io_entries != i+1) { - if (((OMPI_MPI_OFFSET_TYPE)(intptr_t)fh->f_io_array[i].offset + - (OPAL_PTRDIFF_TYPE)fh->f_io_array[i].length) == - (OMPI_MPI_OFFSET_TYPE)(intptr_t)fh->f_io_array[i+1].offset) { + if ( (((OMPI_MPI_OFFSET_TYPE)(intptr_t)fh->f_io_array[i].offset + + (OPAL_PTRDIFF_TYPE)fh->f_io_array[i].length) == + (OMPI_MPI_OFFSET_TYPE)(intptr_t)fh->f_io_array[i+1].offset) && + (iov_count < IOV_MAX )) { iov[iov_count].iov_base = fh->f_io_array[i+1].memory_address; iov[iov_count].iov_len = fh->f_io_array[i+1].length;