Skip to content

Commit 184e148

Browse files
committed
Fix nullptr reference with peer_pdp
After Peer is constructed, and before the session initialization for that peer completes, the peer_pdp pointer was null. It is possible that the pointer will be dereferenced in that time window. Initialize the peer_pdp pointer at construction time so that it will always be non-null.
1 parent bd7f807 commit 184e148

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

Peer.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ Peer::Peer(boost::asio::ip::tcp::socket * peer_socket, DlepPtr dlep) :
3838

3939
peer_endpoint_tcp = peer_socket->remote_endpoint();
4040
peer_id = dlep->get_peer_id_from_endpoint(peer_endpoint_tcp);
41+
LLDLEP::DataItems empty_data_items;
42+
peer_pdp = dlep->info_base_manager->addPeer(peer_id, empty_data_items);
4143

4244
msg << "Peer ID is " << peer_id ;
4345
LOG(DLEP_LOG_DEBUG, msg);
@@ -1209,8 +1211,6 @@ Peer::handle_peer_initialization(ProtocolMessage & pm)
12091211
/* no-op */
12101212
}
12111213

1212-
peer_pdp = dlep->info_base_manager->addPeer(peer_id, empty_data_items);
1213-
12141214
send_peer_initialization_response();
12151215

12161216
// Now that we've sent a PEER_INITIALIZATION_Response, we consider
@@ -1310,7 +1310,7 @@ Peer::handle_peer_initialization_response(ProtocolMessage & pm)
13101310

13111311
DataItems data_items = pm.get_data_items();
13121312

1313-
peer_pdp = dlep->info_base_manager->addPeer(peer_id, data_items);
1313+
peer_pdp->update_data_items(data_items, false);
13141314

13151315
// Now that we've received a PEER_INITIALIZATION_Response,
13161316
// we consider this session to be up.

0 commit comments

Comments
 (0)