@@ -51,13 +51,13 @@ static bool tox_event_dht_nodes_response_set_ip(Tox_Event_Dht_Nodes_Response *dh
51
51
dht_nodes_response -> ip_length = 0 ;
52
52
}
53
53
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 );
55
55
56
56
if (ip_tmp == nullptr ) {
57
57
return false;
58
58
}
59
59
60
- memcpy (ip_tmp , ip , ip_length );
60
+ memcpy (ip_tmp , ip , ip_length + 1 );
61
61
dht_nodes_response -> ip = ip_tmp ;
62
62
dht_nodes_response -> ip_length = ip_length ;
63
63
return true;
@@ -206,22 +206,17 @@ static Tox_Event_Dht_Nodes_Response *tox_event_dht_nodes_response_alloc(void *us
206
206
207
207
void tox_events_handle_dht_nodes_response (
208
208
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 )
210
210
{
211
211
Tox_Event_Dht_Nodes_Response * dht_nodes_response = tox_event_dht_nodes_response_alloc (user_data );
212
212
213
213
if (dht_nodes_response == nullptr ) {
214
214
return ;
215
215
}
216
216
217
- const size_t ip_length = strlen (ip );
218
- if (ip_length >= UINT32_MAX ) {
219
- return ;
220
- }
221
-
222
217
const Tox_System * sys = tox_get_system (tox );
223
218
224
219
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 );
226
221
tox_event_dht_nodes_response_set_port (dht_nodes_response , port );
227
222
}
0 commit comments