Skip to content

Commit a9e46ae

Browse files
author
Jakub Strzebonski
committed
#1393 fix possible binding references to null pointers
1 parent 4ca48c0 commit a9e46ae

21 files changed

+51
-51
lines changed

examples/rdma/rdma_simple_get.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ static vt::RDMA_GetType test_get_fn(
8686
this_node, num_bytes, tag
8787
);
8888
return vt::RDMA_GetType{
89-
&my_data[0] + tag, num_bytes == vt::no_byte ? sizeof(double)*10 : num_bytes
89+
my_data.get() + tag, num_bytes == vt::no_byte ? sizeof(double)*10 : num_bytes
9090
};
9191
}
9292

examples/rdma/rdma_simple_get_direct.cc

+2-2
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ static void tellHandle(HandleMsg* msg) {
6060
fmt::print("{}: handle={}, requesting data\n", this_node, msg->han);
6161
int const num_elm = 2;
6262
vt::theRDMA()->getTypedDataInfoBuf(
63-
msg->han, &my_data[0], num_elm, vt::no_byte, vt::no_tag, [=]{
63+
msg->han, my_data.get(), num_elm, vt::no_byte, vt::no_tag, [=]{
6464
for (auto i = 0; i < num_elm; i++) {
6565
fmt::print("node {}: \t: my_data[{}] = {}\n", this_node, i, my_data[i]);
6666
}
@@ -83,7 +83,7 @@ int main(int argc, char** argv) {
8383

8484
if (this_node == 0) {
8585
vt::RDMA_HandleType my_handle =
86-
vt::theRDMA()->registerNewTypedRdmaHandler(&my_data[0], my_data_len);
86+
vt::theRDMA()->registerNewTypedRdmaHandler(my_data.get(), my_data_len);
8787

8888
auto msg = vt::makeMessage<HandleMsg>(this_node);
8989
msg->han = my_handle;

examples/rdma/rdma_simple_put.cc

+2-2
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ static void put_handler_fn(
103103
fmt::print(
104104
"{}: put_handler_fn: my_data={}, in_ptr={}, in_num_bytes={}, tag={}, "
105105
"offset={}\n",
106-
this_node, print_ptr(&my_data[0]), print_ptr(in_ptr), in_num_bytes, tag,
106+
this_node, print_ptr(my_data.get()), print_ptr(in_ptr), in_num_bytes, tag,
107107
offset
108108
);
109109

@@ -115,7 +115,7 @@ static void put_handler_fn(
115115
);
116116
}
117117

118-
std::memcpy(&my_data[0] + offset, in_ptr, in_num_bytes);
118+
std::memcpy(my_data.get() + offset, in_ptr, in_num_bytes);
119119
}
120120

121121
int main(int argc, char** argv) {

examples/rdma/rdma_simple_put_direct.cc

+3-3
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,13 @@ static void putDataFn(HandleMsg* msg) {
7272
if (this_node == 1 or this_node == 2) {
7373
fmt::print(
7474
"{}: putting data, handle={}, my_data={}\n",
75-
this_node, msg->han, print_ptr(&my_data[0])
75+
this_node, msg->han, print_ptr(my_data.get())
7676
);
7777

7878
int const num_elm = 2;
7979
int const offset = num_elm*(this_node-1);
8080
auto han = msg->han;
81-
vt::theRDMA()->putTypedData(msg->han, &my_data[0], num_elm, offset, [=]{
81+
vt::theRDMA()->putTypedData(msg->han, my_data.get(), num_elm, offset, [=]{
8282
fmt::print(
8383
"{}: after put: sending msg back to 0: offset={}\n", this_node, offset
8484
);
@@ -108,7 +108,7 @@ int main(int argc, char** argv) {
108108

109109
if (this_node == 0) {
110110
vt::RDMA_HandleType my_handle =
111-
vt::theRDMA()->registerNewTypedRdmaHandler(&my_data[0], put_len);
111+
vt::theRDMA()->registerNewTypedRdmaHandler(my_data.get(), put_len);
112112

113113
fmt::print(
114114
"{}: initializing my_handle={}\n",

snippets/minimal-large-send-test.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ int main(int argc, char** argv) {
5858

5959
std::vector<MPI_Status> stats;
6060
stats.resize(reqs.size());
61-
MPI_Waitall(reqs.size(), &reqs[0], &stats[0]);
61+
MPI_Waitall(reqs.size(), reqs.data(), stats.data());
6262

6363
MPI_Finalize();
6464

src/vt/configs/arguments/args.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -748,7 +748,7 @@ std::tuple<int, std::string> ArgConfig::parseArguments(CLI::App& app, int& argc,
748748

749749
// Set them back with all vt (and MPI) arguments elided
750750
argc = new_argc;
751-
argv = &new_argv[0];
751+
argv = new_argv.get();
752752

753753
return std::make_tuple(-1, std::string{});
754754
}

src/vt/group/group_info.impl.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ template <typename MsgT>
187187

188188
// Create parent region
189189
auto region = std::make_unique<region::List>(
190-
&local_nodes[0], num_children, true
190+
local_nodes.data(), num_children, true
191191
);
192192

193193
theGroup()->initializeRemoteGroup(

src/vt/group/region/group_shallow_list.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ ShallowList::ShallowList(List const& in_list)
5959
{ }
6060

6161
ShallowList::ShallowList(ListType const& in_list)
62-
: ShallowList(&in_list[0], in_list.size())
62+
: ShallowList(in_list.data(), in_list.size())
6363
{ }
6464

6565
/*virtual*/ ShallowList::SizeType ShallowList::getSize() const {

src/vt/rdmahandle/handle.index.impl.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -160,11 +160,11 @@ Handle<
160160
if (this->getBuffer() == nullptr) {
161161
auto ptr = std::make_unique<T[]>(len);
162162
auto r = proxy.get()->rget(
163-
index, l, &ptr[0], len, offset + this->hoff()
163+
index, l, ptr.get(), len, offset + this->hoff()
164164
);
165165
r.addAction([cptr=std::move(ptr),actions=this->actions_]{
166166
for (auto&& action : actions) {
167-
action(&cptr[0]);
167+
action(cptr.get());
168168
}
169169
});
170170
return r;

src/vt/rdmahandle/handle.node.impl.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,11 @@ Handle<
9595
if (this->getBuffer() == nullptr) {
9696
auto ptr = std::make_unique<T[]>(len);
9797
auto r = vt::theHandleRDMA()->getEntry<T,E>(key_).rget(
98-
node, l, &ptr[0], len, offset + this->hoff()
98+
node, l, ptr.get(), len, offset + this->hoff()
9999
);
100100
r.addAction([cptr=std::move(ptr),actions=this->actions_]{
101101
for (auto&& action : actions) {
102-
action(&cptr[0]);
102+
action(cptr.get());
103103
}
104104
});
105105
return r;

src/vt/rdmahandle/sub_handle.impl.h

+5-5
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ void SubHandle<T,E,IndexT>::updateInfo(
210210
auto ptr = std::make_unique<uint64_t[]>(home_size);
211211
// These can probably be relaxed to Shared locks because lin_idx is never
212212
// modified
213-
loc_handle_.get(home, &ptr[0], home_size, 0, Lock::Exclusive);
213+
loc_handle_.get(home, ptr.get(), home_size, 0, Lock::Exclusive);
214214
for (uint64_t i = 0; i < home_size; i += 4) {
215215
vt_debug_print(
216216
verbose, rdma,
@@ -229,7 +229,7 @@ void SubHandle<T,E,IndexT>::updateInfo(
229229
auto pptr = std::make_unique<uint64_t[]>(2);
230230
pptr[0] = info.getOffset();
231231
pptr[1] = info.getNode();
232-
loc_handle_.put(home, &pptr[0], 2, offset + 1, Lock::Exclusive);
232+
loc_handle_.put(home, pptr.get(), 2, offset + 1, Lock::Exclusive);
233233
}
234234
}
235235
}
@@ -242,7 +242,7 @@ IndexInfo SubHandle<T,E,IndexT>::fetchInfo(IndexT const& idx) {
242242
auto offset = getOrderedOffset(idx, home_node);
243243
if (not is_migratable_) {
244244
auto ptr = std::make_unique<uint64_t[]>(4);
245-
loc_handle_.get(home_node, &ptr[0], 4, offset*2, Lock::Exclusive);
245+
loc_handle_.get(home_node, ptr.get(), 4, offset*2, Lock::Exclusive);
246246
auto lin_idx = linearize(idx);
247247
vt_debug_print(
248248
verbose, rdma,
@@ -254,7 +254,7 @@ IndexInfo SubHandle<T,E,IndexT>::fetchInfo(IndexT const& idx) {
254254
return IndexInfo(home_node, ptr[1], ptr[3]-ptr[1]);
255255
} else {
256256
auto ptr = std::make_unique<uint64_t[]>(4);
257-
loc_handle_.get(home_node, &ptr[0], 4, offset*4, Lock::Exclusive);
257+
loc_handle_.get(home_node, ptr.get(), 4, offset*4, Lock::Exclusive);
258258
auto lin_idx = linearize(idx);
259259
vt_debug_print(
260260
verbose, rdma,
@@ -274,7 +274,7 @@ IndexInfo SubHandle<T,E,IndexT>::fetchInfo(IndexT const& idx) {
274274
);
275275
auto lin_idx = linearize(idx);
276276
auto ptr = std::make_unique<uint64_t[]>(home_size);
277-
loc_handle_.get(home_node, &ptr[0], home_size, 0, Lock::Exclusive);
277+
loc_handle_.get(home_node, ptr.get(), home_size, 0, Lock::Exclusive);
278278
if (not is_migratable_) {
279279
for (uint64_t i = 0; i < home_size; i += 2) {
280280
vt_debug_print(

src/vt/topos/index/dense/dense_array.impl.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ bool DenseIndexArray<IndexType, ndim>::operator==(
194194

195195
template <typename IndexType, NumDimensionsType ndim>
196196
IndexType const* DenseIndexArray<IndexType, ndim>::raw() const {
197-
return &dims[0];
197+
return dims.data();
198198
}
199199

200200
template <typename IndexType, NumDimensionsType ndim>

src/vt/utils/demangle/demangle.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ DemanglerUtils::join(
203203
) {
204204
std::string s;
205205
for (std::string const& i : strs) {
206-
if (&i != &strs[0]) {
206+
if (&i != strs.data()) {
207207
s += delim;
208208
}
209209
s += i;

src/vt/vrt/collection/balance/stats_restart_reader.cc

+2-2
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ void StatsRestartReader::gatherMsgs(VecMsg *msg) {
270270
proc_phase_runs_LB_[phaseID] = (!migrate.empty());
271271
auto& myList = proc_move_list_[phaseID];
272272
myList.resize(toMove.size() - header);
273-
std::copy(&toMove[header], &toMove[0] + toMove.size(),
273+
std::copy(&toMove[header], toMove.data() + toMove.size(),
274274
myList.begin());
275275
}
276276
}
@@ -293,7 +293,7 @@ void StatsRestartReader::scatterMsgs(VecMsg *msg) {
293293
}
294294
//--- Copy the migration information
295295
myList.resize(recvVec.size() - header);
296-
std::copy(&recvVec[header], &recvVec[0]+recvVec.size(), myList.begin());
296+
std::copy(&recvVec[header], recvVec.data()+recvVec.size(), myList.begin());
297297
}
298298

299299
}}}} /* end namespace vt::vrt::collection::balance */

tests/unit/active/test_active_bcast_put.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ TEST_P(TestActiveBroadcastPut, test_type_safe_active_fn_bcast2) {
126126
if (my_node == root) {
127127
for (int i = 0; i < num_msg_sent; i++) {
128128
auto msg = makeMessage<PutTestMessage>();
129-
msg->setPut(&put_payload[0], put_size * sizeof(int));
129+
msg->setPut(put_payload.data(), put_size * sizeof(int));
130130
theMsg()->broadcastMsg<PutTestMessage, test_handler>(msg);
131131
}
132132
}

tests/unit/active/test_active_send.cc

+2-2
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ TEST_F(TestActiveSend, test_type_safe_active_fn_send_small_put) {
190190
if (my_node == from_node) {
191191
for (int i = 0; i < num_msg_sent; i++) {
192192
auto msg = makeMessage<PutTestMessage>();
193-
msg->setPut(&test_vec[0], sizeof(int)*test_vec.size());
193+
msg->setPut(test_vec.data(), sizeof(int)*test_vec.size());
194194
#if DEBUG_TEST_HARNESS_PRINT
195195
fmt::print("{}: sendMsg: (put) i={}\n", my_node, i);
196196
#endif
@@ -215,7 +215,7 @@ TEST_F(TestActiveSend, test_type_safe_active_fn_send_large_put) {
215215
if (my_node == from_node) {
216216
for (int i = 0; i < num_msg_sent; i++) {
217217
auto msg = makeMessage<PutTestMessage>();
218-
msg->setPut(&test_vec_2[0], sizeof(int)*test_vec_2.size());
218+
msg->setPut(test_vec_2.data(), sizeof(int)*test_vec_2.size());
219219
#if DEBUG_TEST_HARNESS_PRINT
220220
fmt::print("{}: sendMsg: (put) i={}\n", my_node, i);
221221
#endif

tests/unit/active/test_active_send_put.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ TEST_P(TestActiveSendPut, test_active_fn_send_put_param) {
109109
auto msg = makeMessage<PutTestMessage>(
110110
static_cast<int>(test_vec_2.size())
111111
);
112-
msg->setPut(&test_vec_2[0], sizeof(int)*test_vec_2.size());
112+
msg->setPut(test_vec_2.data(), sizeof(int)*test_vec_2.size());
113113
#if DEBUG_TEST_HARNESS_PRINT
114114
fmt::print("{}: sendMsg: (put) i={}\n", my_node, i);
115115
#endif

tests/unit/rdma/test_rdma_collection_handle.extended.cc

+2-2
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ struct TestCol : vt::Collection<TestCol<T>, vt::Index2D> {
7777
auto next_x = idx.x() + 1 < 8 ? idx.x() + 1 : 0;
7878
vt::Index2D next(next_x, idx.y());
7979
auto ptr = std::make_unique<T[]>(8);
80-
handle_.get(next, &ptr[0], 8, 0, vt::Lock::Shared);
80+
handle_.get(next, ptr.get(), 8, 0, vt::Lock::Shared);
8181
for (int i = 0; i < 8; i++) {
8282
EXPECT_EQ(ptr[i], next_x * 100 + idx.y());
8383
}
@@ -106,7 +106,7 @@ struct TestCol : vt::Collection<TestCol<T>, vt::Index2D> {
106106
auto next_x = idx.x() + 1 < 8 ? idx.x() + 1 : 0;
107107
vt::Index2D next(next_x, idx.y());
108108
auto ptr = std::make_unique<T[]>(8);
109-
handle_.get(next, &ptr[0], 8, 0, vt::Lock::Shared);
109+
handle_.get(next, ptr.get(), 8, 0, vt::Lock::Shared);
110110
for (int i = 0; i < 8; i++) {
111111
EXPECT_EQ(ptr[i], next_x * 100 + idx.y());
112112
}

tests/unit/rdma/test_rdma_handle.h

+10-10
Original file line numberDiff line numberDiff line change
@@ -101,18 +101,18 @@ TYPED_TEST_P(TestRDMAHandle, test_rdma_handle_1) {
101101
for (vt::NodeType node = 0; node < num; node++) {
102102
{
103103
auto ptr = std::make_unique<T[]>(size);
104-
handle.get(node, &ptr[0], size, 0, vt::Lock::Shared);
104+
handle.get(node, ptr.get(), size, 0, vt::Lock::Shared);
105105
UpdateData<T>::test(std::move(ptr), space, size, node, 0);
106106
}
107107
{
108108
auto ptr = std::make_unique<T[]>(size/2);
109-
auto req = handle.rget(node, &ptr[0], size/2, size/2, vt::Lock::Shared);
109+
auto req = handle.rget(node, ptr.get(), size/2, size/2, vt::Lock::Shared);
110110
req.wait();
111111
UpdateData<T>::test(std::move(ptr), space, size/2, node, size/2);
112112
}
113113
{
114114
auto ptr = std::make_unique<T[]>(1);
115-
handle.get(node, &ptr[0], 1, size-1, vt::Lock::Shared);
115+
handle.get(node, ptr.get(), 1, size-1, vt::Lock::Shared);
116116
UpdateData<T>::test(std::move(ptr), space, 1, node, size-1);
117117
}
118118
}
@@ -144,7 +144,7 @@ TYPED_TEST_P(TestRDMAHandle, test_rdma_handle_2) {
144144
for (vt::NodeType node = 0; node < num; node++) {
145145
{
146146
auto ptr = std::make_unique<T[]>(size);
147-
handle.get(node, &ptr[0], size, 0, vt::Lock::Shared);
147+
handle.get(node, ptr.get(), size, 0, vt::Lock::Shared);
148148
UpdateData<T>::test(std::move(ptr), space, size, node, 0);
149149
}
150150
}
@@ -154,8 +154,8 @@ TYPED_TEST_P(TestRDMAHandle, test_rdma_handle_2) {
154154

155155
{
156156
auto ptr = std::make_unique<T[]>(size/2);
157-
UpdateData<T>::setMem(&ptr[0], space, size/2, rank, size/2);
158-
handle.put(next, &ptr[0], size/2, size/2, vt::Lock::Exclusive);
157+
UpdateData<T>::setMem(ptr.get(), space, size/2, rank, size/2);
158+
handle.put(next, ptr.get(), size/2, size/2, vt::Lock::Exclusive);
159159
}
160160

161161
// Barrier to allow puts to finish
@@ -164,7 +164,7 @@ TYPED_TEST_P(TestRDMAHandle, test_rdma_handle_2) {
164164
{
165165
auto ptr = std::make_unique<T[]>(size);
166166
auto ptr2 = std::make_unique<T[]>(size);
167-
handle.get(next, &ptr[0], size, 0, vt::Lock::Shared);
167+
handle.get(next, ptr.get(), size, 0, vt::Lock::Shared);
168168
for (std::size_t i = 0; i < size; i++) {
169169
ptr2[i] = ptr[i];
170170
}
@@ -198,7 +198,7 @@ TYPED_TEST_P(TestRDMAHandle, test_rdma_handle_3) {
198198
for (std::size_t i = 0; i < size; i++) {
199199
ptr[i] = static_cast<T>(1);
200200
}
201-
handle.accum(node, &ptr[0], size, 0, MPI_SUM, vt::Lock::Shared);
201+
handle.accum(node, ptr.get(), size, 0, MPI_SUM, vt::Lock::Shared);
202202
}
203203
}
204204

@@ -208,7 +208,7 @@ TYPED_TEST_P(TestRDMAHandle, test_rdma_handle_3) {
208208
for (vt::NodeType node = 0; node < num; node++) {
209209
{
210210
auto ptr = std::make_unique<T[]>(size);
211-
handle.get(node, &ptr[0], size, 0, vt::Lock::Exclusive);
211+
handle.get(node, ptr.get(), size, 0, vt::Lock::Exclusive);
212212
UpdateData<T>::test(std::move(ptr), space, size, 0, 0, num);
213213
}
214214
}
@@ -268,7 +268,7 @@ TYPED_TEST_P(TestRDMAHandle, test_rdma_handle_5) {
268268
for (vt::NodeType node = 0; node < num; node++) {
269269
{
270270
auto ptr = std::make_unique<T[]>(size);
271-
handle.get(node, &ptr[0], size, 0, vt::Lock::Exclusive);
271+
handle.get(node, ptr.get(), size, 0, vt::Lock::Exclusive);
272272
UpdateData<T>::test(std::move(ptr), space, size, 0, node, num);
273273
}
274274
}

0 commit comments

Comments
 (0)