mirror of
https://github.com/libgit2/libgit2.git
synced 2026-06-22 06:26:26 +00:00
tests: optional test for p_open() with empty path segments
This commit is contained in:
2
.github/workflows/main.yml
vendored
2
.github/workflows/main.yml
vendored
@@ -86,7 +86,7 @@ jobs:
|
||||
env:
|
||||
CC: gcc
|
||||
CMAKE_GENERATOR: Ninja
|
||||
CMAKE_OPTIONS: -DUSE_HTTPS=OpenSSL -DREGEX_BACKEND=builtin -DDEPRECATE_HARD=ON -DUSE_LEAK_CHECKER=valgrind -DUSE_GSSAPI=ON -DDEBUG_STRICT_ALLOC=ON
|
||||
CMAKE_OPTIONS: -DUSE_HTTPS=OpenSSL -DREGEX_BACKEND=builtin -DDEPRECATE_HARD=ON -DUSE_LEAK_CHECKER=valgrind -DUSE_GSSAPI=ON -DDEBUG_STRICT_ALLOC=ON -DDEBUG_STRICT_OPEN=ON
|
||||
os: ubuntu-latest
|
||||
- # Xenial, GCC, mbedTLS
|
||||
container:
|
||||
|
||||
@@ -51,6 +51,7 @@ OPTION(USE_STANDALONE_FUZZERS "Enable standalone fuzzers (compatible with gcc)"
|
||||
OPTION(USE_LEAK_CHECKER "Run tests with leak checker" OFF)
|
||||
OPTION(DEBUG_POOL "Enable debug pool allocator" OFF)
|
||||
OPTION(DEBUG_STRICT_ALLOC "Enable strict allocator behavior" OFF)
|
||||
OPTION(DEBUG_STRICT_OPEN "Enable path validation in open" OFF)
|
||||
OPTION(ENABLE_WERROR "Enable compilation with -Werror" OFF)
|
||||
OPTION(USE_BUNDLED_ZLIB "Use the bundled version of zlib. Can be set to one of Bundled(ON)/Chromium. The Chromium option requires a x86_64 processor with SSE4.2 and CLMUL" OFF)
|
||||
SET(USE_HTTP_PARSER "" CACHE STRING "Specifies the HTTP Parser implementation; either system or builtin.")
|
||||
|
||||
@@ -11,6 +11,11 @@ IF(DEBUG_STRICT_ALLOC)
|
||||
ENDIF()
|
||||
ADD_FEATURE_INFO(debugalloc GIT_DEBUG_STRICT_ALLOC "debug strict allocators")
|
||||
|
||||
IF(DEBUG_STRICT_OPEN)
|
||||
SET(GIT_DEBUG_STRICT_OPEN 1)
|
||||
ENDIF()
|
||||
ADD_FEATURE_INFO(debugopen GIT_DEBUG_STRICT_OPEN "path validation in open")
|
||||
|
||||
INCLUDE(PkgBuildConfig)
|
||||
INCLUDE(SanitizeBool)
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
#cmakedefine GIT_DEBUG_POOL 1
|
||||
#cmakedefine GIT_DEBUG_STRICT_ALLOC 1
|
||||
#cmakedefine GIT_DEBUG_STRICT_OPEN 1
|
||||
|
||||
#cmakedefine GIT_TRACE 1
|
||||
#cmakedefine GIT_THREADS 1
|
||||
|
||||
@@ -109,6 +109,13 @@ int p_open(const char *path, volatile int flags, ...)
|
||||
{
|
||||
mode_t mode = 0;
|
||||
|
||||
#ifdef GIT_DEBUG_STRICT_OPEN
|
||||
if (strstr(path, "//") != NULL) {
|
||||
errno = EACCES;
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (flags & O_CREAT) {
|
||||
va_list arg_list;
|
||||
|
||||
|
||||
@@ -543,6 +543,13 @@ int p_open(const char *path, int flags, ...)
|
||||
mode_t mode = 0;
|
||||
struct open_opts opts = {0};
|
||||
|
||||
#ifdef GIT_DEBUG_STRICT_OPEN
|
||||
if (strstr(path, "//") != NULL) {
|
||||
errno = EACCES;
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (git_win32_path_from_utf8(wpath, path) < 0)
|
||||
return -1;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user