From 91f0dbc9ec60e1e047d227f5780c477622544442 Mon Sep 17 00:00:00 2001 From: Amulya Kumar Sahoo Date: Fri, 30 May 2014 11:44:50 +0530 Subject: [PATCH 1/2] Fix of a bug MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Stream::find(char *target) passes NULL as “terminator” to Stream::findUntil(char *target, char *terminator), which immediately dereferences it by passing it on to strlen(): bool Stream::find(char *target) { return findUntil(target, NULL); } // as find but search ends if the terminator string is found bool Stream::findUntil(char *target, char *terminator) { return findUntil(target, strlen(target), terminator, strlen(terminator)); } --- hardware/arduino/cores/arduino/Stream.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hardware/arduino/cores/arduino/Stream.cpp b/hardware/arduino/cores/arduino/Stream.cpp index aafb7fcf9..f21a411f8 100644 --- a/hardware/arduino/cores/arduino/Stream.cpp +++ b/hardware/arduino/cores/arduino/Stream.cpp @@ -75,7 +75,7 @@ void Stream::setTimeout(unsigned long timeout) // sets the maximum number of mi // find returns true if the target string is found bool Stream::find(char *target) { - return findUntil(target, NULL); + return findUntil(target, ""); } // reads data from the stream until the target string of given length is found From 2c3058b2d5ae889feacde25880464dce84a5e1fd Mon Sep 17 00:00:00 2001 From: Amulya Kumar Sahoo Date: Fri, 30 May 2014 11:47:08 +0530 Subject: [PATCH 2/2] Fix of a bug MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Stream::find(char *target) passes NULL as “terminator” to Stream::findUntil(char *target, char *terminator), which immediately dereferences it by passing it on to strlen() : bool Stream::find(char *target) { return findUntil(target, NULL); } // as find but search ends if the terminator string is found bool Stream::findUntil(char *target, char *terminator) { return findUntil(target, strlen(target), terminator, strlen(terminator)); } --- hardware/arduino/cores/robot/Stream.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hardware/arduino/cores/robot/Stream.cpp b/hardware/arduino/cores/robot/Stream.cpp index aafb7fcf9..f21a411f8 100644 --- a/hardware/arduino/cores/robot/Stream.cpp +++ b/hardware/arduino/cores/robot/Stream.cpp @@ -75,7 +75,7 @@ void Stream::setTimeout(unsigned long timeout) // sets the maximum number of mi // find returns true if the target string is found bool Stream::find(char *target) { - return findUntil(target, NULL); + return findUntil(target, ""); } // reads data from the stream until the target string of given length is found