forked from espressif/esp-protocols
		
	mdns: fix crash for hostname queries
Receiving TXT, PTR, SDPTR and SRV record type queries would crash the application if the hostname was used as instance name. Closes https://github.com/espressif/esp-idf/issues/4224 * Original commit: espressif/esp-idf@3d1170031b
This commit is contained in:
		
				
					committed by
					
						
						suren-gabrielyan-espressif
					
				
			
			
				
	
			
			
			
						parent
						
							d8d6b35553
						
					
				
				
					commit
					f6ff165be9
				
			@@ -445,6 +445,10 @@ static uint16_t _mdns_append_ptr_record(uint8_t * packet, uint16_t * index, cons
 | 
			
		||||
    uint16_t record_length = 0;
 | 
			
		||||
    uint8_t part_length;
 | 
			
		||||
 | 
			
		||||
    if (service == NULL) {
 | 
			
		||||
        return 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    str[0] = instance;
 | 
			
		||||
    str[1] = service;
 | 
			
		||||
    str[2] = proto;
 | 
			
		||||
@@ -489,6 +493,10 @@ static uint16_t _mdns_append_sdptr_record(uint8_t * packet, uint16_t * index, md
 | 
			
		||||
    uint16_t record_length = 0;
 | 
			
		||||
    uint8_t part_length;
 | 
			
		||||
 | 
			
		||||
    if (service == NULL) {
 | 
			
		||||
        return 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    sd_str[0] = (char*)"_services";
 | 
			
		||||
    sd_str[1] = (char*)"_dns-sd";
 | 
			
		||||
    sd_str[2] = (char*)"_udp";
 | 
			
		||||
@@ -534,6 +542,10 @@ static uint16_t _mdns_append_txt_record(uint8_t * packet, uint16_t * index, mdns
 | 
			
		||||
    uint16_t record_length = 0;
 | 
			
		||||
    uint8_t part_length;
 | 
			
		||||
 | 
			
		||||
    if (service == NULL) {
 | 
			
		||||
        return 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    str[0] = _mdns_get_service_instance_name(service);
 | 
			
		||||
    str[1] = service->service;
 | 
			
		||||
    str[2] = service->proto;
 | 
			
		||||
@@ -602,6 +614,10 @@ static uint16_t _mdns_append_srv_record(uint8_t * packet, uint16_t * index, mdns
 | 
			
		||||
    uint16_t record_length = 0;
 | 
			
		||||
    uint8_t part_length;
 | 
			
		||||
 | 
			
		||||
    if (service == NULL) {
 | 
			
		||||
        return 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    str[0] = _mdns_get_service_instance_name(service);
 | 
			
		||||
    str[1] = service->service;
 | 
			
		||||
    str[2] = service->proto;
 | 
			
		||||
@@ -1151,6 +1167,7 @@ static bool _mdns_alloc_answer(mdns_out_answer_t ** destnation, uint16_t type, m
 | 
			
		||||
    }
 | 
			
		||||
    a->type = type;
 | 
			
		||||
    a->service = service;
 | 
			
		||||
    a->custom_service = NULL;
 | 
			
		||||
    a->bye = bye;
 | 
			
		||||
    a->flush = flush;
 | 
			
		||||
    a->next = NULL;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user