From 212a1e781363c643c9d958e1a25fb74cdf26398d Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Wed, 23 Mar 2016 11:52:37 +0100 Subject: [PATCH] fixed buffer overflow --- 3rdParty/linenoise-ng/src/linenoise.cpp | 10 +++++----- CMakeLists.txt | 14 +++++++------- GNUmakefile | 3 +-- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/3rdParty/linenoise-ng/src/linenoise.cpp b/3rdParty/linenoise-ng/src/linenoise.cpp index b2ab8670e0..366a94f4a4 100644 --- a/3rdParty/linenoise-ng/src/linenoise.cpp +++ b/3rdParty/linenoise-ng/src/linenoise.cpp @@ -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) { - while (*src && 1 < len) { + while (0 < len && *src) { *dst++ = *src++; --len; } @@ -1963,7 +1963,7 @@ int InputBuffer::completeLine(PromptBase& pi) { int tailIndex = startIndex + longestCommonPrefix; memcpy(&displayText[tailIndex], &buf32[pos], sizeof(char32_t) * (displayLength - tailIndex + 1)); - copyString32(buf32, displayText.get(), buflen + 1); + copyString32(buf32, displayText.get(), displayLength); pos = startIndex + longestCommonPrefix; len = displayLength; refreshLine(pi); @@ -2303,7 +2303,7 @@ int InputBuffer::incrementalHistorySearch(PromptBase& pi, int startChar) { --dp.searchTextLen; dp.searchText[dp.searchTextLen] = 0; copyString32(tempUnicode.get(), dp.searchText.get(), - dp.searchTextLen + 1); + dp.searchTextLen); dp.updateSearchText(tempUnicode.get()); } else { beep(); @@ -2318,7 +2318,7 @@ int InputBuffer::incrementalHistorySearch(PromptBase& pi, int startChar) { unique_ptr tempUnicode( new char32_t[dp.searchTextLen + 2]); copyString32(tempUnicode.get(), dp.searchText.get(), - dp.searchTextLen + 2); + dp.searchTextLen); tempUnicode[dp.searchTextLen] = c; tempUnicode[dp.searchTextLen + 1] = 0; dp.updateSearchText(tempUnicode.get()); @@ -2395,7 +2395,7 @@ int InputBuffer::incrementalHistorySearch(PromptBase& pi, int startChar) { Utf32String tempUnicode(pb.promptBytes + 1); copyString32(tempUnicode.get(), &pi.promptText[pi.promptLastLinePosition], - pb.promptBytes + 1); + pb.promptBytes - pi.promptLastLinePosition); tempUnicode.initFromBuffer(); pb.promptText = tempUnicode; pb.promptExtraLines = 0; diff --git a/CMakeLists.txt b/CMakeLists.txt index 4f53907e74..370ab2cd02 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -175,11 +175,11 @@ if (WINDOWS) set(BASE_C_FLAGS "" CACHE STRING "base C flags") set(BASE_CXX_FLAGS "/GR /EHsc" CACHE STRING "base C++flags") else () - set(BASE_FLAGS "" CACHE STRING "base flags") - set(BASE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "base C flags") - set(BASE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "base C++ flags") - set(BASE_LD_FLAGS "$ENV{LDFLAGS}" CACHE STRING "base linker flags") - set(BASE_LIBS "$ENV{LIBS}" CACHE STRING "base libraries") + set(BASE_FLAGS "" CACHE STRING "base flags") + set(BASE_C_FLAGS "${CMAKE_C_FLAGS} $ENV{CFLAGS}" 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_LIBS "$ENV{LIBS}" CACHE STRING "base libraries") endif () if (SOLARIS) @@ -447,13 +447,13 @@ if (VERBOSE) message(STATUS) 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_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_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_RELEASE "${BASE_FLAGS} ${BASE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}") set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${BASE_FLAGS} ${BASE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") diff --git a/GNUmakefile b/GNUmakefile index d2128d1af6..e06a2df590 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -52,8 +52,7 @@ help: @echo " -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl" @echo " sets the location of the openssl includes and libraries" @echo "" - @echo "BOOST supports:" - @echo "" + @echo "TCMALLOC supports:" @echo " -DUSE_TCMALLOC=on" @echo " if ON, link against TCMALLOC" @echo ""