1
0
Fork 0

fixed buffer overflow

This commit is contained in:
Frank Celler 2016-03-23 11:52:37 +01:00
parent b610ba3894
commit 212a1e7813
3 changed files with 13 additions and 14 deletions

View File

@ -251,7 +251,7 @@ static void copyString32to8(char* dst, size_t dstLen, const char32_t* src) {
} }
static void copyString32(char32_t* dst, const char32_t* src, size_t len) { static void copyString32(char32_t* dst, const char32_t* src, size_t len) {
while (*src && 1 < len) { while (0 < len && *src) {
*dst++ = *src++; *dst++ = *src++;
--len; --len;
} }
@ -1963,7 +1963,7 @@ int InputBuffer::completeLine(PromptBase& pi) {
int tailIndex = startIndex + longestCommonPrefix; int tailIndex = startIndex + longestCommonPrefix;
memcpy(&displayText[tailIndex], &buf32[pos], memcpy(&displayText[tailIndex], &buf32[pos],
sizeof(char32_t) * (displayLength - tailIndex + 1)); sizeof(char32_t) * (displayLength - tailIndex + 1));
copyString32(buf32, displayText.get(), buflen + 1); copyString32(buf32, displayText.get(), displayLength);
pos = startIndex + longestCommonPrefix; pos = startIndex + longestCommonPrefix;
len = displayLength; len = displayLength;
refreshLine(pi); refreshLine(pi);
@ -2303,7 +2303,7 @@ int InputBuffer::incrementalHistorySearch(PromptBase& pi, int startChar) {
--dp.searchTextLen; --dp.searchTextLen;
dp.searchText[dp.searchTextLen] = 0; dp.searchText[dp.searchTextLen] = 0;
copyString32(tempUnicode.get(), dp.searchText.get(), copyString32(tempUnicode.get(), dp.searchText.get(),
dp.searchTextLen + 1); dp.searchTextLen);
dp.updateSearchText(tempUnicode.get()); dp.updateSearchText(tempUnicode.get());
} else { } else {
beep(); beep();
@ -2318,7 +2318,7 @@ int InputBuffer::incrementalHistorySearch(PromptBase& pi, int startChar) {
unique_ptr<char32_t[]> tempUnicode( unique_ptr<char32_t[]> tempUnicode(
new char32_t[dp.searchTextLen + 2]); new char32_t[dp.searchTextLen + 2]);
copyString32(tempUnicode.get(), dp.searchText.get(), copyString32(tempUnicode.get(), dp.searchText.get(),
dp.searchTextLen + 2); dp.searchTextLen);
tempUnicode[dp.searchTextLen] = c; tempUnicode[dp.searchTextLen] = c;
tempUnicode[dp.searchTextLen + 1] = 0; tempUnicode[dp.searchTextLen + 1] = 0;
dp.updateSearchText(tempUnicode.get()); dp.updateSearchText(tempUnicode.get());
@ -2395,7 +2395,7 @@ int InputBuffer::incrementalHistorySearch(PromptBase& pi, int startChar) {
Utf32String tempUnicode(pb.promptBytes + 1); Utf32String tempUnicode(pb.promptBytes + 1);
copyString32(tempUnicode.get(), &pi.promptText[pi.promptLastLinePosition], copyString32(tempUnicode.get(), &pi.promptText[pi.promptLastLinePosition],
pb.promptBytes + 1); pb.promptBytes - pi.promptLastLinePosition);
tempUnicode.initFromBuffer(); tempUnicode.initFromBuffer();
pb.promptText = tempUnicode; pb.promptText = tempUnicode;
pb.promptExtraLines = 0; pb.promptExtraLines = 0;

View File

@ -176,8 +176,8 @@ if (WINDOWS)
set(BASE_CXX_FLAGS "/GR /EHsc" CACHE STRING "base C++flags") set(BASE_CXX_FLAGS "/GR /EHsc" CACHE STRING "base C++flags")
else () else ()
set(BASE_FLAGS "" CACHE STRING "base flags") set(BASE_FLAGS "" CACHE STRING "base flags")
set(BASE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "base C flags") set(BASE_C_FLAGS "${CMAKE_C_FLAGS} $ENV{CFLAGS}" CACHE STRING "base C flags")
set(BASE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "base C++ flags") set(BASE_CXX_FLAGS "${CMAKE_CXX_FLAGS} $ENV{CXXFLAGS}" CACHE STRING "base C++ flags")
set(BASE_LD_FLAGS "$ENV{LDFLAGS}" CACHE STRING "base linker flags") set(BASE_LD_FLAGS "$ENV{LDFLAGS}" CACHE STRING "base linker flags")
set(BASE_LIBS "$ENV{LIBS}" CACHE STRING "base libraries") set(BASE_LIBS "$ENV{LIBS}" CACHE STRING "base libraries")
endif () endif ()
@ -447,13 +447,13 @@ if (VERBOSE)
message(STATUS) message(STATUS)
endif () endif ()
set(CMAKE_C_FLAGS "${BASE_FLAGS} ${BASE_C_FLAGS}") set(CMAKE_C_FLAGS "${BASE_FLAGS} ${BASE_C_FLAGS} ${CMAKE_C_FLAGS}")
set(CMAKE_C_FLAGS_DEBUG "${BASE_FLAGS} ${BASE_C_FLAGS} ${CMAKE_C_FLAGS_DEBUG}") set(CMAKE_C_FLAGS_DEBUG "${BASE_FLAGS} ${BASE_C_FLAGS} ${CMAKE_C_FLAGS_DEBUG}")
set(CMAKE_C_FLAGS_RELEASE "${BASE_FLAGS} ${BASE_C_FLAGS} ${CMAKE_C_FLAGS_RELEASE}") set(CMAKE_C_FLAGS_RELEASE "${BASE_FLAGS} ${BASE_C_FLAGS} ${CMAKE_C_FLAGS_RELEASE}")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${BASE_FLAGS} ${BASE_C_FLAGS} ${CMAKE_C_FLAGS_RELWITHDEBINFO}") set(CMAKE_C_FLAGS_RELWITHDEBINFO "${BASE_FLAGS} ${BASE_C_FLAGS} ${CMAKE_C_FLAGS_RELWITHDEBINFO}")
set(CMAKE_C_FLAGS_MINSIZEREL "${BASE_FLAGS} ${BASE_C_FLAGS} ${CMAKE_C_FLAGS_MINSIZEREL}") set(CMAKE_C_FLAGS_MINSIZEREL "${BASE_FLAGS} ${BASE_C_FLAGS} ${CMAKE_C_FLAGS_MINSIZEREL}")
set(CMAKE_CXX_FLAGS "${BASE_FLAGS} ${BASE_CXX_FLAGS}") set(CMAKE_CXX_FLAGS "${BASE_FLAGS} ${BASE_CXX_FLAGS} ${CMAKE_CXX_FLAGS}")
set(CMAKE_CXX_FLAGS_DEBUG "${BASE_FLAGS} ${BASE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}") set(CMAKE_CXX_FLAGS_DEBUG "${BASE_FLAGS} ${BASE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}")
set(CMAKE_CXX_FLAGS_RELEASE "${BASE_FLAGS} ${BASE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}") set(CMAKE_CXX_FLAGS_RELEASE "${BASE_FLAGS} ${BASE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${BASE_FLAGS} ${BASE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${BASE_FLAGS} ${BASE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")

View File

@ -52,8 +52,7 @@ help:
@echo " -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl" @echo " -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl"
@echo " sets the location of the openssl includes and libraries" @echo " sets the location of the openssl includes and libraries"
@echo "" @echo ""
@echo "BOOST supports:" @echo "TCMALLOC supports:"
@echo ""
@echo " -DUSE_TCMALLOC=on" @echo " -DUSE_TCMALLOC=on"
@echo " if ON, link against TCMALLOC" @echo " if ON, link against TCMALLOC"
@echo "" @echo ""