Skip to content

Commit 93f7721

Browse files
authored
Merge pull request #732 from david-cermak/fix/mdns_clangtiy_warns
[mdns]: Fixes clang-tidy warnings
2 parents 9b74256 + 196198e commit 93f7721

File tree

1 file changed

+22
-16
lines changed

1 file changed

+22
-16
lines changed

components/mdns/mdns.c

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -253,12 +253,13 @@ static char *_mdns_mangle_name(char *in)
253253
}
254254
sprintf(ret, "%s-2", in);
255255
} else {
256-
ret = malloc(strlen(in) + 2); //one extra byte in case 9-10 or 99-100 etc
256+
size_t in_len = strlen(in);
257+
ret = malloc(in_len + 2); //one extra byte in case 9-10 or 99-100 etc
257258
if (ret == NULL) {
258259
HOOK_MALLOC_FAILED;
259260
return NULL;
260261
}
261-
strcpy(ret, in);
262+
memcpy(ret, in, in_len);
262263
int baseLen = p - in; //length of 'bla' in 'bla-123'
263264
//overwrite suffix with new suffix
264265
sprintf(ret + baseLen, "-%d", suffix + 1);
@@ -1811,7 +1812,6 @@ static bool _mdns_create_answer_from_service(mdns_tx_packet_t *packet, mdns_serv
18111812
return false;
18121813
}
18131814
} else if (question->type == MDNS_TYPE_SDPTR) {
1814-
shared = true;
18151815
if (!_mdns_alloc_answer(&packet->answers, MDNS_TYPE_SDPTR, service, NULL, false, false)) {
18161816
return false;
18171817
}
@@ -2355,6 +2355,11 @@ static void _mdns_restart_pcb(mdns_if_t tcpip_if, mdns_ip_protocol_t ip_protocol
23552355
srv_count++;
23562356
a = a->next;
23572357
}
2358+
if (srv_count == 0) {
2359+
// proble only IP
2360+
_mdns_init_pcb_probe(tcpip_if, ip_protocol, NULL, 0, true);
2361+
return;
2362+
}
23582363
mdns_srv_item_t *services[srv_count];
23592364
size_t i = 0;
23602365
a = _mdns_server->services;
@@ -2555,6 +2560,10 @@ static void _mdns_restart_all_pcbs(void)
25552560
srv_count++;
25562561
a = a->next;
25572562
}
2563+
if (srv_count == 0) {
2564+
_mdns_probe_all_pcbs(NULL, 0, true, true);
2565+
return;
2566+
}
25582567
mdns_srv_item_t *services[srv_count];
25592568
size_t l = 0;
25602569
a = _mdns_server->services;
@@ -2898,11 +2907,12 @@ static int _mdns_check_srv_collision(mdns_service_t *service, uint16_t priority,
28982907
static int _mdns_check_txt_collision(mdns_service_t *service, const uint8_t *data, size_t len)
28992908
{
29002909
size_t data_len = 0;
2901-
if (len == 1 && service->txt) {
2910+
if (len <= 1 && service->txt) { // len==0 means incorrect packet (and handled by the packet parser)
2911+
// but handled here again to fix clang-tidy warning on VLA "uint8_t our[0];"
29022912
return -1;//we win
29032913
} else if (len > 1 && !service->txt) {
29042914
return 1;//they win
2905-
} else if (len == 1 && !service->txt) {
2915+
} else if (len <= 1 && !service->txt) {
29062916
return 0;//same
29072917
}
29082918

@@ -3788,7 +3798,7 @@ void mdns_parse_packet(mdns_rx_packet_t *packet)
37883798
mdns_class &= 0x7FFF;
37893799

37903800
content = data_ptr + data_len;
3791-
if (content > (data + len)) {
3801+
if (content > (data + len) || data_len == 0) {
37923802
goto clear_rx_packet;
37933803
}
37943804

@@ -4271,15 +4281,10 @@ void mdns_parse_packet(mdns_rx_packet_t *packet)
42714281
free(record);
42724282
}
42734283
free(parsed_packet);
4274-
if (browse_result_instance) {
4275-
free(browse_result_instance);
4276-
}
4277-
if (browse_result_service) {
4278-
free(browse_result_service);
4279-
}
4280-
if (browse_result_proto) {
4281-
free(browse_result_proto);
4282-
}
4284+
free(browse_result_instance);
4285+
free(browse_result_service);
4286+
free(browse_result_proto);
4287+
free(out_sync_browse);
42834288
}
42844289

42854290
/**
@@ -5346,7 +5351,8 @@ static void _mdns_service_task(void *pvParameters)
53465351
for (;;) {
53475352
if (_mdns_server && _mdns_server->action_queue) {
53485353
if (xQueueReceive(_mdns_server->action_queue, &a, portMAX_DELAY) == pdTRUE) {
5349-
if (a && a->type == ACTION_TASK_STOP) {
5354+
assert(a);
5355+
if (a->type == ACTION_TASK_STOP) {
53505356
break;
53515357
}
53525358
MDNS_SERVICE_LOCK();

0 commit comments

Comments
 (0)