@@ -51,13 +51,13 @@ static bool tox_event_dht_nodes_response_set_ip(Tox_Event_Dht_Nodes_Response *dh
5151 dht_nodes_response -> ip_length = 0 ;
5252 }
5353
54- uint8_t * ip_tmp = (uint8_t * )mem_balloc (mem , ip_length );
54+ uint8_t * ip_tmp = (uint8_t * )mem_balloc (mem , ip_length + 1 );
5555
5656 if (ip_tmp == nullptr ) {
5757 return false;
5858 }
5959
60- memcpy (ip_tmp , ip , ip_length );
60+ memcpy (ip_tmp , ip , ip_length + 1 );
6161 dht_nodes_response -> ip = ip_tmp ;
6262 dht_nodes_response -> ip_length = ip_length ;
6363 return true;
@@ -206,22 +206,17 @@ static Tox_Event_Dht_Nodes_Response *tox_event_dht_nodes_response_alloc(void *us
206206
207207void tox_events_handle_dht_nodes_response (
208208 Tox * tox , const uint8_t public_key [TOX_PUBLIC_KEY_SIZE ],
209- const char * ip , uint16_t port , void * user_data )
209+ const char * ip , uint32_t ip_length , uint16_t port , void * user_data )
210210{
211211 Tox_Event_Dht_Nodes_Response * dht_nodes_response = tox_event_dht_nodes_response_alloc (user_data );
212212
213213 if (dht_nodes_response == nullptr ) {
214214 return ;
215215 }
216216
217- const size_t ip_length = strlen (ip );
218- if (ip_length >= UINT32_MAX ) {
219- return ;
220- }
221-
222217 const Tox_System * sys = tox_get_system (tox );
223218
224219 tox_event_dht_nodes_response_set_public_key (dht_nodes_response , public_key );
225- tox_event_dht_nodes_response_set_ip (dht_nodes_response , ip , ip_length + 1 , sys -> mem );
220+ tox_event_dht_nodes_response_set_ip (dht_nodes_response , ip , ip_length , sys -> mem );
226221 tox_event_dht_nodes_response_set_port (dht_nodes_response , port );
227222}
0 commit comments