From 8dd068eb40b4214f0ba81413d8888ae825e1d0f4 Mon Sep 17 00:00:00 2001 From: "Earle F. Philhower, III" Date: Fri, 13 Sep 2019 15:33:16 -0700 Subject: [PATCH] Add memmove_P, use it in String to ensure F() safety (#6514) memmove_P is now in libc, so use it to allow WString to handle F() pointers without errors. Supercedes #6368 Fixes #6384 --- cores/esp8266/WString.cpp | 33 ++++++++---------- tests/host/sys/pgmspace.h | 1 + .../xtensa-lx106-elf/include/sys/string.h | 1 + tools/sdk/libc/xtensa-lx106-elf/lib/libc.a | Bin 5507218 -> 5508488 bytes 4 files changed, 16 insertions(+), 19 deletions(-) diff --git a/cores/esp8266/WString.cpp b/cores/esp8266/WString.cpp index aee4b1c94..048704074 100644 --- a/cores/esp8266/WString.cpp +++ b/cores/esp8266/WString.cpp @@ -185,7 +185,7 @@ unsigned char String::changeBuffer(unsigned int maxStrLen) { size_t oldSize = capacity() + 1; // include NULL. if (isSSO()) { // Copy the SSO buffer into allocated space - memmove(newbuffer, sso.buff, sizeof(sso.buff)); + memmove_P(newbuffer, sso.buff, sizeof(sso.buff)); } if (newSize > oldSize) { @@ -210,7 +210,7 @@ String & String::copy(const char *cstr, unsigned int length) { return *this; } setLen(length); - memmove(wbuffer(), cstr, length + 1); + memmove_P(wbuffer(), cstr, length + 1); return *this; } @@ -228,7 +228,7 @@ String & String::copy(const __FlashStringHelper *pstr, unsigned int length) { void String::move(String &rhs) { if(buffer()) { if(capacity() >= rhs.len()) { - memmove(wbuffer(), rhs.buffer(), rhs.length() + 1); + memmove_P(wbuffer(), rhs.buffer(), rhs.length() + 1); setLen(rhs.len()); rhs.invalidate(); return; @@ -241,7 +241,7 @@ void String::move(String &rhs) { } if (rhs.isSSO()) { setSSO(true); - memmove(sso.buff, rhs.sso.buff, sizeof(sso.buff)); + memmove_P(sso.buff, rhs.sso.buff, sizeof(sso.buff)); } else { setSSO(false); setBuffer(rhs.wbuffer()); @@ -313,7 +313,7 @@ unsigned char String::concat(const String &s) { return 1; if (!reserve(newlen)) return 0; - memmove(wbuffer() + len(), buffer(), len()); + memmove_P(wbuffer() + len(), buffer(), len()); setLen(newlen); wbuffer()[len()] = 0; return 1; @@ -330,12 +330,7 @@ unsigned char String::concat(const char *cstr, unsigned int length) { return 1; if(!reserve(newlen)) return 0; - if (cstr >= wbuffer() && cstr < wbuffer() + len()) - // compatible with SSO in ram #6155 (case "x += x.c_str()") - memmove(wbuffer() + len(), cstr, length + 1); - else - // compatible with source in flash #6367 - memcpy_P(wbuffer() + len(), cstr, length + 1); + memmove_P(wbuffer() + len(), cstr, length + 1); setLen(newlen); return 1; } @@ -739,21 +734,21 @@ void String::replace(const String& find, const String& replace) { char *foundAt; if(diff == 0) { while((foundAt = strstr(readFrom, find.buffer())) != NULL) { - memmove(foundAt, replace.buffer(), replace.len()); + memmove_P(foundAt, replace.buffer(), replace.len()); readFrom = foundAt + replace.len(); } } else if(diff < 0) { char *writeTo = wbuffer(); while((foundAt = strstr(readFrom, find.buffer())) != NULL) { unsigned int n = foundAt - readFrom; - memmove(writeTo, readFrom, n); + memmove_P(writeTo, readFrom, n); writeTo += n; - memmove(writeTo, replace.buffer(), replace.len()); + memmove_P(writeTo, replace.buffer(), replace.len()); writeTo += replace.len(); readFrom = foundAt + find.len(); setLen(len() + diff); } - memmove(writeTo, readFrom, strlen(readFrom)+1); + memmove_P(writeTo, readFrom, strlen(readFrom)+1); } else { unsigned int size = len(); // compute size needed for result while((foundAt = strstr(readFrom, find.buffer())) != NULL) { @@ -767,9 +762,9 @@ void String::replace(const String& find, const String& replace) { int index = len() - 1; while(index >= 0 && (index = lastIndexOf(find, index)) >= 0) { readFrom = wbuffer() + index + find.len(); - memmove(readFrom + diff, readFrom, len() - (readFrom - buffer())); + memmove_P(readFrom + diff, readFrom, len() - (readFrom - buffer())); int newLen = len() + diff; - memmove(wbuffer() + index, replace.buffer(), replace.len()); + memmove_P(wbuffer() + index, replace.buffer(), replace.len()); setLen(newLen); wbuffer()[newLen] = 0; index--; @@ -797,7 +792,7 @@ void String::remove(unsigned int index, unsigned int count) { char *writeTo = wbuffer() + index; unsigned int newlen = len() - count; setLen(newlen); - memmove(writeTo, wbuffer() + index + count, newlen - index); + memmove_P(writeTo, wbuffer() + index + count, newlen - index); wbuffer()[newlen] = 0; } @@ -829,7 +824,7 @@ void String::trim(void) { unsigned int newlen = end + 1 - begin; setLen(newlen); if(begin > buffer()) - memmove(wbuffer(), begin, newlen); + memmove_P(wbuffer(), begin, newlen); wbuffer()[newlen] = 0; } diff --git a/tests/host/sys/pgmspace.h b/tests/host/sys/pgmspace.h index be5046bd9..1b357d2e3 100644 --- a/tests/host/sys/pgmspace.h +++ b/tests/host/sys/pgmspace.h @@ -60,6 +60,7 @@ inline size_t strlen_P(const char *s) { return strlen(s); } inline int vsnprintf_P(char *str, size_t size, const char *format, va_list ap) { return vsnprintf(str, size, format, ap); } #define memcpy_P memcpy +#define memmove_P memmove #define strncpy_P strncpy #define strcmp_P strcmp #define memccpy_P memccpy diff --git a/tools/sdk/libc/xtensa-lx106-elf/include/sys/string.h b/tools/sdk/libc/xtensa-lx106-elf/include/sys/string.h index 159b2d802..e19c3d843 100644 --- a/tools/sdk/libc/xtensa-lx106-elf/include/sys/string.h +++ b/tools/sdk/libc/xtensa-lx106-elf/include/sys/string.h @@ -25,6 +25,7 @@ extern "C" { int _EXFUN(memcmp_P,(const _PTR, const _PTR, size_t)); _PTR _EXFUN(memmem_P, (const _PTR, size_t, const _PTR, size_t)); _PTR _EXFUN(memcpy_P,(_PTR __restrict, const _PTR __restrict, size_t)); +_PTR _EXFUN(memmove_P,(_PTR __restrict, const _PTR __restrict, size_t)); _PTR _EXFUN(memccpy_P,(_PTR __restrict, const _PTR __restrict, int, size_t)); _PTR _EXFUN(memchr_P,(const _PTR, int, size_t)); diff --git a/tools/sdk/libc/xtensa-lx106-elf/lib/libc.a b/tools/sdk/libc/xtensa-lx106-elf/lib/libc.a index aa8a59bd91f03fb6a4f5eb3be36d81a86fb3cace..9c879cdeb5cec1defc01c357add684c91fe5edbf 100644 GIT binary patch delta 44202 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 N1jF>`Pdr!S{{!_z`pf_T