- Feb 15, 2023
-
-
Nikita Zheleztsov authored
According to the business logic and assertions `idx` and `data32` variables cannot be equal to NULL at the same time. However, we cannot rely on assertions. Let's check that explicitly. If this situation occurs somehow the function exits as we cannot recover from this situation: we don't have sources, from which values for enumeration can be taken. Moreover, continuing of the code execution is such situation may lead to accessing NULL if `c<limit`. Closes tarantool/security#59 NO_CHANGELOG=<security fix> NO_DOC=<security fix> NO_TEST=<third-party security fix>
-
- Feb 13, 2023
-
-
Georgiy Lebedev authored
`set_client_ciphersuite` can potentially dereference NULL if the session's cipher is not set — add a check for this condition. Closes tarantool/security#27 NO_CHANGELOG=<security fix> NO_DOC=<security fix> NO_TEST=<third-party security fix>
-
Vladimir Davydov authored
The problem is if cat fails, because a patch file doesn't exist PATH_COMMAND written like this won't detect it, because the last command (patch) will complete successfully (apply existing patches found by cat): cat XXX.patch YYY.patch | patch -p1 The proper way is to use PATCH_COMMAND continuation: PATCH_COMMAND patch -p1 -i XXX.patch COMMAND patch -p1 -i YYY.patch NO_DOC=build NO_TEST=build NO_CHANGELOG=build
-
- Feb 10, 2023
-
-
Pavel Balaev authored
tls_construct_ctos_session_ticket() has a potential NULL pointer dereference. Closes tarantool/security#54 NO_DOC=security NO_TEST=security NO_CHANGELOG=security
-
psergee authored
Added bounds check after conversion of a string key to int to avoid potential out-of-bounds access. Closes tarantool/security#45 NO_TEST=trivial NO_CHANGELOG=internal NO_DOC=internal
-
Vladimir Davydov authored
We're going to add a whole bunch of them. Putting them all in a sub-directory will help keeping the file tree organized. Note, we have to update .gitignore so that the patches/ sub-directory is ignored only at the top level (it's used by quilt). NO_DOC=build NO_TEST=build NO_CHANGELOG=build
-
- Jan 18, 2023
-
-
Vladimir Davydov authored
ICU symbol renaming was disabled in EE build by commit https://github.com/tarantool/tarantool-ee/commit/f51346d682e3afd93592023d0dedfb1e45167c7a ("static-build: disable symbols renaming for libicu"), because EE build exports ICU symbols so that they can be used by Lua modules. It isn't necessary in CE build, but since we're planning to reuse the CE cmake config in the EE repository, we should do that. Needed for https://github.com/tarantool/tarantool-ee/issues/185 NO_DOC=no functional changes NO_TEST=no functional changes NO_CHANGELOG=no functional changes
-
Vladimir Davydov authored
Split it so that it can be reused in the EE repository: - static-build/cmake/AddDependencyProjects.cmake Adds the external projects that are required to build tarantool. The project names are stored in the TARANTOOL_DEPENDS variable. - static-build/cmake/AddTarantoolProject.cmake Should be called after AddDependencyProjects.cmake, because it uses the TARANTOOL_DEPENDS variable. Adds the Tarantool external project and sets the TARANTOOL_BINARY to the path to the built tarantool binary. - static-build/cmake/AddTests.cmake Should be called after AddTarantoolProject.cmake, because it uses the TARANTOOL_BINARY variable. Adds cmake tests for the static binary. Now, static-build/CMakeLists.txt just includes the three helper files. The helper files are designed in such a way that they can be included from the EE repository's CMakeLists.txt. We split the original config into the three helper files, because in the EE repository, we need to add extra dependency projects and extra tests. While we are at it, we also move the cmake tests from static-build/test/static-build to static-build/test and static-build/test/CheckDependencies.cmake to static-build/cmake/CheckDependencies.cmake. This commit introduces no functional changes - it just moves the code. Needed for https://github.com/tarantool/tarantool-ee/issues/185 NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring
-
- Nov 07, 2022
-
-
Georgiy Lebedev authored
The `-Wa,--debug-prefix-map` compiler flag breaks GNU-based LTO, and also we cannot reliably test this feature. Follow-up 256da010 NO_CHANGELOG=bugfix NO_DOC=bugfix NO_TEST=bugfix
-
- Oct 21, 2022
-
-
Georgiy Lebedev authored
Since our diagnostics use the `__FILE__` macro, they provide absolute paths, which is kind of redundant and inconsistent: replace them with relative ones. As for debugging information, replacing absolute paths with relative ones also requires an extra command to tell the debugger where to find the source files, which is not convenient for developers: provide a new `DEV_BUILD` option (turned off by default), which replaces absolute paths with relative ones in debugging information if turned off. Strip the prefix map flags from compiler flags exported to tarantool via `src/trvia/config.h`. Closes #7808 NO_DOC=<verbosity> NO_TEST=<verbosity>
-
Georgiy Lebedev authored
Setting hardening compiler flags is used in three places: default build, static build and enterprise build — refactor it into a separate module. Follow-up e6abe1c9 NO_CHANGELOG=refactoring NO_DOC=refactoring NO_TEST=refactoring
-
- Sep 15, 2022
-
-
Ilya Verbin authored
Introduce cmake option ENABLE_HARDENING, which is TRUE by default for non-debug regular and static builds, excluding AArch64 and FreeBSD. It passess compiler flags that harden Tarantool (including the bundled libraries) against memory corruption attacks. The following flags are passed: * -Wformat - Check calls to printf and scanf, etc., to make sure that the arguments supplied have types appropriate to the format string specified. * -Wformat-security -Werror=format-security - Warn about uses of format functions that represent possible security problems. And make the warning into an error. * -fstack-protector-strong - Emit extra code to check for buffer overflows, such as stack smashing attacks. * -fPIC -pie - Generate position-independent code (PIC). It allows to take advantage of the Address Space Layout Randomization (ASLR). * -z relro -z now - Resolve all dynamically linked functions at the beginning of the execution, and then make the GOT read-only. Also do not disable hardening for Debian and RPM-based Linux distros. Closes #5372 Closes #7536 NO_DOC=build NO_TEST=build
-
- Aug 16, 2022
-
-
Ilya Verbin authored
Currently `make` in `static-build` doesn't rebuild Tarantool when source files are changed. Fix this by setting BUILD_ALWAYS option, which forces rescan for changes of the external project [1]: > This option is not normally needed unless developers are expected to > modify something the external project's build depends on in a way that > is not detectable via the step target dependencies (e.g. SOURCE_DIR is > used without a download method and developers might modify the sources > in SOURCE_DIR). It is available since CMake 3.1, so update cmake_minimum_required, as we already require it (fa8d70ca). [1] https://cmake.org/cmake/help/latest/module/ExternalProject.html Part of #7536 NO_DOC=build NO_TEST=build NO_CHANGELOG=minor
-
- Aug 03, 2022
-
-
Vladimir Davydov authored
NO_DOC=build NO_TEST=build
-
Alexander Turenko authored
The static build for Linux leans on glibc provided iconv functions. On Mac OS it links GNU libiconv statically. This patch updates the libiconv version from 1.16 (released in 2019) to 1.17 (released in 2022). It is just regular maintenance update. No behaviour changes are expected. The libiconv 1.17 changelog (see the NEWS file in the archive) does not mention anything that may have influence on behavior of tarantool's iconv built-in module. NO_DOC=no user-visible changes NO_TEST=no user-visible changes NO_CHANGELOG=no user-visible changes
-
- Aug 02, 2022
-
-
Alexander Turenko authored
Without `-isysroot <SDK_PATH>` the build fails: ``` /Library/Developer/CommandLineTools/usr/bin/make[4]: Making `all' in \ `makeconv' /Library/Developer/CommandLineTools/usr/bin/c++ -O2 -W -Wall -pedantic \ -Wpointer-arith -Wwrite-strings -Wno-long-long -std=c++11 \ -Wno-ambiguous-reversed-operator -o ../../bin/makeconv \ gencnvex.o genmbcs.o makeconv.o ucnvstat.o -L../../lib -licutu \ -L../../lib -licui18n -L../../lib -licuuc -L../../stubdata \ -licudata -lpthread -lm ld: library not found for -lpthread clang: error: linker command failed with exit code 1 (use -v to see \ invocation) ``` ICU is written on C++, so we should pass `CXXFLAGS`, not only `CFLAGS`. Note: `CPPFLAGS` stands for C preprocessor flags, not C++ flags. Fixes #7459 NO_DOC=it fixes a build failure for one of build types, nothing to document NO_TEST=it will be tested in a next commit by enabling corresponding GitHub Action workflow
-
Sergey Bronnikov authored
Just regular update to bring readline security fixes into tarantool. Added a patch to fix file descriptor leak with zero-length history file. Source of patch: https://ftp.gnu.org/gnu/readline/readline-8.0-patches/ Announcement: https://lists.gnu.org/archive/html/bug-readline/2019-08/msg00004.html NO_TEST=security update of a dependency NO_DOC=security update of a dependency
-
Sergey Bronnikov authored
Just regular update to bring ncurses security fixes into tarantool. New version brings a number of functional and security fixes: - ncurses 6.3 before patch 20220416 has an out-of-bounds read and segmentation violation in convert_strings in tinfo/read_entry.c in the terminfo library (CVE-2022-29458). - ncurses through v6.2-1. _nc_captoinfo in captoinfo.c has a heap-based buffer overflow (CVE-2021-39537). CVE-2022-29458 Detail: https://nvd.nist.gov/vuln/detail/CVE-2022-29458 CVE-2021-39537 Detail: https://nvd.nist.gov/vuln/detail/CVE-2021-39537 Release announcement: https://lists.gnu.org/archive/html/bug-ncurses/2022-07/msg00008.html NOTE: Build system uses a link to tarball on a local storage instead of official mirror [1]. 1. https://invisible-mirror.net/archives/ncurses/current/ NO_TEST=security update of a dependency NO_DOC=security update of a dependency
-
- Jul 15, 2022
-
-
Alexander Turenko authored
Just regular update to bring openssl security fixes into tarantool. Added a patch for Mac OS to fix a build failure, see https://github.com/openssl/openssl/issues/18720. Changelog: https://www.openssl.org/news/cl111.txt Vulnerabilities: https://www.openssl.org/news/vulnerabilities.html NO_TEST=security update of a dependency NO_DOC=security update of a dependency
-
- Apr 14, 2022
-
-
Alexander Turenko authored
Just regular update to bring openssl security fixes into tarantool. Fixes #6947 NO_TEST=security update of a dependency NO_DOC=security update of a dependency
-
- Apr 13, 2022
-
-
Oleg Babin authored
This patch updates libicu version to 71.1. See changelog for details (https://icu.unicode.org/download/71). The main reason to do that is a bug in datetime parsing that was found using icu-date module (tarantool/icu-date#27) and was fixed in linicu upstream (https://unicode-org.atlassian.net/browse/ICU-21802). NO_DOC=build NO_TEST=build
-
- Mar 29, 2022
-
-
Nick Volynkin authored
Use a new storage bucket, made specifically for open-source third-party software distributions. NO_DOC=testing NO_TEST=testing NO_CHANGELOG=testing
-
- Mar 24, 2022
-
-
Nick Volynkin authored
zlib.net is unavailable, so we have to download zlib distributions from a backup storage on VKCS S3. NO_DOC=testing NO_TEST=testing NO_CHANGELOG=testing
-
- Mar 18, 2022
-
-
Georgiy Lebedev authored
Investigation of GNU libunwind problems on the aarch64-linux-gnu platform drive us to the conclusion that libunwind-1.2.1 provided by major distribution packages is broken. Not to mention that its test suite fails with SEGFAULTs. Last but not least, some distributions, e.g. CentOS 8 (see #4611) do not provide a libunwind package. Hence, bundle libunwind: bundling is enabled by default on all platforms, except for macOS — a system package can be used if its version is greater or equal than 1.3.0 (minimal version that does not seem to be broken on aarch64-linux-gnu). * Add new submodule: bump it to current master. * Refactor libunwind package search logic out of compiler.cmake. * Add CMake script for building bundled libunwind. * Add CMake script for extracting version of libunwind. * Re-enable backtrace for all RHEL distributions by default. * Remove libunwind from static build. Needed for #4002 Closes #4611 NO_DOC=build system NO_TEST=build system
-
- Jan 31, 2022
-
-
Andrei Sidorov authored
Fix static build for macOS 11.5 or higher. On macOS SDK ver. 11.5 some `*.dylib` files was replaced with `*.tbd`. So we replace `libunwind.dylib` on `libunwind.tbd`. Because of macOS 10.15 support being dropped conditional is not needed. Closes #6052
-
- Dec 13, 2021
-
-
Vladimir Davydov authored
If the tarantool repository is used as a submodule named <foobar> in another repository, then the statically built binary will be placed in <binary_dir>/<foobar>/src/tarantool not in <binary_dir>/src/tarantool where static-build/CMakeLists.txt currently tries to look it up in order to run `ctest` and so we can't use static-build/CMakeLists.txt as is. Let's instead use <install_dir>/bin/tarantool This way `ctest` will work for static-build in both open-source and EE repository without requiring any modifications.
-
- Dec 10, 2021
-
-
Vladimir Davydov authored
Without it `tarantoolctl rocks` would require luarocks to be installed on the system, which isn't always possible.
-
- May 20, 2021
-
-
Yaroslav Dynnikov authored
commit fbc04dfb ("static-build: use hashes of downloaded files") added hashes for ExternalProject_Add() to avoid extra downloads on project rebuild. Changes for libicu and libiconv were missed and this patch fixes it. Follows-up #5761 Co-authored-by:
Sergey Bronnikov <sergeyb@tarantool.org>
-
- Jan 29, 2021
-
-
Sergey Bronnikov authored
Using hashes in ExternalProject_Add() [1] allows to avoid extra downloads on rebuild. 1. https://cmake.org/cmake/help/latest/module/ExternalProject.html Closes #5761
-
- Sep 15, 2020
-
-
HustonMmmavr authored
Refactored static build process to use static-build/CMakeLists.txt instead of Dockerfile.staticbuild (this allows to support static build on macOS). Following third-party dependencies for static build are installed via cmake `ExternalProject_Add`: - OpenSSL - Zlib - Ncurses - Readline - Unwind - ICU * Added support static build for macOS * Fixed `CONFIGURE_COMMAND` while building bundled libcurl for static build at file cmake/BuildLibCURL.cmake: - disable building shared libcurl libraries (by setting `--disable-shared` option) - disable hiding libcurl symbols (by setting `--disable-symbol-hiding` option) - prevent linking libcurl with system libz (by setting `--with-zlib=${FOUND_ZLIB_ROOT_DIR}` option) * Removed Dockerfile.staticbuild * Added new gitlab.ci jobs to test new style static build: - static_build_cmake_linux - static_build_cmake_osx_15 * Removed static_docker_build gitlab.ci job Closes #5095 Co-authored-by:
Yaroslav Dynnikov <yaroslav.dynnikov@gmail.com>
-