Add CMake option to toggle stack protection #286
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Using the MinGW-W64 compiler on Windows results in a segfault when a database is initially opened. This seems to be the result of the
-fstack-protector
flag, which has patchy support in MinGW.Note some other major projects that have encountered this, and don't add this flag when compiling with MinGW on Windows:
bitcoin/bitcoin#8732
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86832
I can reproduce this with the example program and embedded sqlite3 library -- Building with MSVC works fine, and building with MinGW-W64 with the flag removed works fine, but segfaults at
sqlite3_open_v2()
with the flag added.This PR adds a CMake option,
SQLITECPP_USE_STACK_PROTECTION
, defaulting to enabled, which allows disabling of this flag. Some other pull requests on this project to improve hardening (see #262) also mention this flag. In KOLANICH's PR, he excludes this flag unless the platform is Linux. I think that a good short-term solution short of refactoring all the hardening flags is to just keep this behind an option and document it with a comment in the CMakeFile.