Fixes for zero length packet bug, buffer overflow in parseInt(), added end() method (#757)

* ArduinoOTA would stop receiving any packets if the port received a zero-length UDP packet, commonly sent by network scanners like nmap. Fixed to flush() after every call to parsePacket(), even if read length is 0.

Additionally, added length checking to fix a potential buffer overflow in parseInt().

Finally, added an end() method that stops the OTA listener and releases resources.

* Only end MDNS in end() if mdns mode is enabled.
This commit is contained in:
davruet
2017-10-30 02:44:15 -07:00
committed by Me No Dev
parent b7db2da17c
commit 126674c3b6
2 changed files with 21 additions and 3 deletions

View File

@ -5,6 +5,9 @@
#include <functional>
#include "Update.h"
#define INT_BUFFER_SIZE 16
typedef enum {
OTA_IDLE,
OTA_WAITAUTH,
@ -63,6 +66,9 @@ class ArduinoOTAClass
//Starts the ArduinoOTA service
void begin();
//Ends the ArduinoOTA service
void end();
//Call this in loop() to run the service
void handle();