From f4a2a1d0e7f1deb47ccae13657acbf3bc030ca87 Mon Sep 17 00:00:00 2001 From: degomme Date: Wed, 8 Mar 2017 00:00:35 +0100 Subject: [PATCH] Use the size argument to check we are not out of bounds Otherwise clang whines that it's useless. --- src/smpi/smpi_win.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/smpi/smpi_win.cpp b/src/smpi/smpi_win.cpp index 0f8f5c2707..86646a9cfd 100644 --- a/src/smpi/smpi_win.cpp +++ b/src/smpi/smpi_win.cpp @@ -125,6 +125,9 @@ int Win::put( void *origin_addr, int origin_count, MPI_Datatype origin_datatype, //get receiver pointer MPI_Win recv_win = connected_wins_[target_rank]; + if(target_count*smpi_datatype_get_extent(target_datatype)>recv_win->size_) + return MPI_ERR_ARG; + void* recv_addr = static_cast ( static_cast(recv_win->base_) + target_disp * recv_win->disp_unit_); XBT_DEBUG("Entering MPI_Put to %d", target_rank); @@ -163,6 +166,9 @@ int Win::get( void *origin_addr, int origin_count, MPI_Datatype origin_datatype, //get sender pointer MPI_Win send_win = connected_wins_[target_rank]; + if(target_count*smpi_datatype_get_extent(target_datatype)>send_win->size_) + return MPI_ERR_ARG; + void* send_addr = static_cast(static_cast(send_win->base_) + target_disp * send_win->disp_unit_); XBT_DEBUG("Entering MPI_Get from %d", target_rank); @@ -207,6 +213,9 @@ int Win::accumulate( void *origin_addr, int origin_count, MPI_Datatype origin_da //get receiver pointer MPI_Win recv_win = connected_wins_[target_rank]; + if(target_count*smpi_datatype_get_extent(target_datatype)>recv_win->size_) + return MPI_ERR_ARG; + void* recv_addr = static_cast(static_cast(recv_win->base_) + target_disp * recv_win->disp_unit_); XBT_DEBUG("Entering MPI_Accumulate to %d", target_rank); //As the tag will be used for ordering of the operations, add count to it -- 2.20.1