From 939e3430de598d32f6c6f59c4ccc28828289f4f7 Mon Sep 17 00:00:00 2001 From: Buzz Burrowes Date: Wed, 30 Dec 2015 23:30:15 -0500 Subject: [PATCH 1/2] Fixed crash bug with mDNS where a string buffer could be used uninitialized. --- libraries/ESP8266mDNS/ESP8266mDNS.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libraries/ESP8266mDNS/ESP8266mDNS.cpp b/libraries/ESP8266mDNS/ESP8266mDNS.cpp index 2e5c711fb9..34fdd4757d 100644 --- a/libraries/ESP8266mDNS/ESP8266mDNS.cpp +++ b/libraries/ESP8266mDNS/ESP8266mDNS.cpp @@ -290,7 +290,8 @@ void MDNSResponder::_parsePacket(){ uint16_t servicePort = 0; char protoName[32]; - uint8_t protoNameLen; + protoName[0] = 0; + uint8_t protoNameLen = 0; uint16_t packetHeader[6]; @@ -330,7 +331,7 @@ void MDNSResponder::_parsePacket(){ serviceName[serviceNameLen] = '\0'; if(serviceName[0] == '_'){ - memcpy(serviceName, serviceName+1, serviceNameLen); + memmove(serviceName, serviceName+1, serviceNameLen); serviceNameLen--; serviceParsed = true; } else if(serviceNameLen == 5 && strcmp("local", serviceName) == 0){ @@ -362,7 +363,7 @@ void MDNSResponder::_parsePacket(){ _conn_readS(protoName, protoNameLen); protoName[protoNameLen] = '\0'; if(protoNameLen == 4 && protoName[0] == '_'){ - memcpy(protoName, protoName+1, protoNameLen); + memmove(protoName, protoName+1, protoNameLen); protoNameLen--; protoParsed = true; } else { From 9b369dbae40a0bc220ec298db9351481aef2bb6f Mon Sep 17 00:00:00 2001 From: Buzz Burrowes Date: Fri, 1 Jan 2016 00:14:41 -0500 Subject: [PATCH 2/2] empty committ for pull request --- libraries/ESP8266mDNS/ESP8266mDNS.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/ESP8266mDNS/ESP8266mDNS.cpp b/libraries/ESP8266mDNS/ESP8266mDNS.cpp index 34fdd4757d..a690bdf222 100644 --- a/libraries/ESP8266mDNS/ESP8266mDNS.cpp +++ b/libraries/ESP8266mDNS/ESP8266mDNS.cpp @@ -495,7 +495,7 @@ void MDNSResponder::_reply(uint8_t replyMask, char * service, char *proto, uint1 size_t hostNameLen = hostName.length(); char underscore[] = "_"; - + // build service name with _ char serviceName[os_strlen(service)+2]; os_strcpy(serviceName,underscore);