The buffer is allocated according to the size of the packet:
|
udpBuffer = (uint8_t*) my_malloc(udp_len); //allocate memory to hold _remaining UDP packet |
- but buffer is accessed based upon apparently number of queries in the packet header
- and butter is accessed and offsets are increased without ensuring that end of buffer is not overrun
- therefore, trivial ability to denial of service ArduinoMDNS devices with malformed UDP packets causing illegal instruction accesses
The buffer is allocated according to the size of the packet:
ArduinoMDNS/MDNS.cpp
Line 532 in 00ed2b6