- 14 Nov, 2016 4 commits
-
-
Update THREADING for OpenSSL 1.1
Carlos Martín Nieto committed -
git_repository_open_ext: fix handling of $GIT_NAMESPACE
Patrick Steinhardt committed -
fileops: fix typos in `git_futils_creat_locked{,with_path}`
Patrick Steinhardt committed -
Patrick Steinhardt committed
-
- 11 Nov, 2016 3 commits
-
-
The existing code would set a namespace of "" (empty string) with GIT_NAMESPACE unset. In a repository where refs/heads/namespaces/ exists, that can produce incorrect results. Detect that case and avoid setting the namespace at all. Since that makes the last assignment to error conditional, and the previous assignment can potentially get GIT_ENOTFOUND, set error to 0 explicitly to prevent the call from incorrectly failing with GIT_ENOTFOUND.
Josh Triplett committed -
Patrick Steinhardt committed
-
We're recently trying to upgrade to the current master of libgit2 in Cargo but we're unfortunately hitting a segfault in one of our tests. This particular test is just a small smoke test that https works (e.g. it's configured in libgit2). It attempts to clone from a URL which simply immediately drops connections after they're accepted (e.g. terminate abnormally). We expect to see a standard error from libgit2 but unfortunately we're seeing a segfault. This segfault is happening inside of the `wait_for` function of `curl_stream.c` at the line `FD_SET(fd, &errfd)` because `fd` is -1. This ends up doing an out-of-bounds array access that faults the program. I tracked back to where this -1 came from to the line here (returned by `CURLINFO_LASTSOCKET`) and added a check to return an error.
Alex Crichton committed
-
- 04 Nov, 2016 4 commits
-
-
global: synchronize initialization and shutdown with pthreads
Patrick Steinhardt committed -
Patrick Steinhardt committed
-
The code correctly detects that forced creation of a branch on a nonbare repo should not be able to overwrite a branch which is the HEAD reference. But there's no reason to prevent this on a bare repo, and in fact, git allows this. I.e., git branch -f master new_sha works on a bare repo with HEAD set to master. This change fixes that problem, and updates tests so that, for this case, both the bare and nonbare cases are checked for correct behavior.
John Fultz committed -
Carlos Martín Nieto committed
-
- 02 Nov, 2016 10 commits
-
-
Carlos Martín Nieto committed
-
add support for OpenSSL 1.1.0 for BIO filter
Carlos Martín Nieto committed -
We need to include the initialisation and construction functions in all backend, so we include this header when building against SecureTransport and WinHTTP as well.
Carlos Martín Nieto committed -
pack: fix race in pack_entry_find_offset
Carlos Martín Nieto committed -
For older versions we can fall back on the deprecated ASN1_STRING_data.
Carlos Martín Nieto committed -
We want to program against the interface, so recreate it when we compile against pre-1.1 versions.
Carlos Martín Nieto committed -
In `pack_entry_find_offset`, we try to find the offset of a certain object in the pack file. To do so, we first assert if the packfile has already been opened and open it if not. Opening the packfile is guarded with a mutex, so concurrent access to this is in fact safe. What is not thread-safe though is our calculation of offsets inside the packfile. Assume two threads calling `pack_entry_find_offset` at the same time. We first calculate the offset and index location and only then determine if the pack has already been opened. If so, we re-calculate the offset and index address. Now the case for two threads: thread 1 first calculates the addresses and is subsequently suspended. The second thread will now call `pack_index_open` and initialize the pack file, calculating its addresses correctly. When the first thread is resumed now, he'll see that the pack file has already been initialized and will happily proceed with the addresses it has already calculated before the check. As the pack file was not initialized before, these addresses are bogus. Fix the issue by only calculating the addresses after having checked if the pack file is open.
Patrick Steinhardt committed -
pqueue: resolve possible NULL pointer dereference
Patrick Steinhardt committed -
Exercise the logic surrounding deinitialization of the libgit2 library as well as repeated concurrent de- and reinitialization. This tries to catch races and makes sure that it is possible to reinitialize libgit2 multiple times. After deinitializing libgit2, we have to make sure to setup options required for testing. Currently, this only includes setting up the configuration search path again. Before, this has been set up once in `tests/main.c`.
Patrick Steinhardt committed -
When threading is not enabled for libgit2, we keep global state in a simple static variable. When libgit2 is shut down, we clean up the global state by freeing the global state's dynamically allocated memory. When libgit2 is built with threading, we additionally free the thread-local storage and thus completely remove the global state. In a non-threaded build, though, we simply leave the global state as-is, which may result in an error upon reinitializing libgit2. Fix the issue by zeroing out the variable on a shutdown, thus returning it to its initial state.
Patrick Steinhardt committed
-
- 01 Nov, 2016 2 commits
-
-
When trying to initialize and tear down global data structures from different threads at once with `git_libgit2_init` and `git_libgit2_shutdown`, we race around initializing data. While we use `pthread_once` to assert that we only initilize data a single time, we actually reset the `pthread_once_t` on the last call to `git_libgit2_shutdown`. As resetting this variable is not synchronized with other threads trying to access it, this is actually racy when one thread tries to do a complete shutdown of libgit2 while another thread tries to initialize it. Fix the issue by creating a mutex which synchronizes `init_once` and the library shutdown.
Patrick Steinhardt committed -
CI Improvements
Carlos Martín Nieto committed
-
- 31 Oct, 2016 6 commits
-
-
Small documentation improvements
Edward Thomson committed -
Our valgrind jobs haven't been failing for several builds by now. This indicates that our tests are sufficiently stable when running under valgrind. As such, any failures reported by valgrind become interesting to us and shouldn't be ignored when causing a build to fail. Remove the valgrind job from the list of allowed failures.
Patrick Steinhardt committed -
When running a Coverity build, we have to provide an authentication token in order to proof that we are actually allowed to run analysis in the name of a certain project. As this token should be secret, it is only set on the main repository, so when we were requested to run the Coverity script on another repository we do error out. But in fact we do also error out if the Coverity analysis should _not_ be run if there is no authentication token provided. Fix the issue by only checking for the authentication token after determining if analysis is indeed requested.
Patrick Steinhardt committed -
Patrick Steinhardt committed
-
Patrick Steinhardt committed
-
Patrick Steinhardt committed
-
- 28 Oct, 2016 4 commits
-
-
The `git_pqueue` struct allows being fixed in its total number of entries. In this case, we simply throw away items that are inserted into the priority queue by examining wether the new item to be inserted has a higher priority than the previous smallest one. This feature somewhat contradicts our pqueue implementation in that it is allowed to not have a comparison function. In fact, we also fail to check if the comparison function is actually set in the case where we add a new item into a fully filled fixed-size pqueue. As we cannot determine which item is the smallest item in absence of a comparison function, we fix the `NULL` pointer dereference by simply dropping all new items which are about to be inserted into a full fixed-size pqueue.
Patrick Steinhardt committed -
We used to only execute Coverity analysis on the 'development' branch before commit 998f0016 (Refine build limitation, 2014-01-15), which refined Coverity build limitations. While we do not really use the 'development' branch anymore, it does still make sense to only analyze a single branch, as otherwise Coverity might get confused. Re-establish the restriction such that we only analyze libgit2's 'master' branch. Also fix the message announcing why we do not actually analyze a certain build.
Patrick Steinhardt committed -
Patrick Steinhardt committed
-
Trivial memory leak fixes in test suite
Patrick Steinhardt committed
-
- 27 Oct, 2016 2 commits
-
-
Patrick Steinhardt committed
-
Patrick Steinhardt committed
-
- 16 Oct, 2016 1 commit
-
-
patch: minor documentation fix.
Carlos Martín Nieto committed
-
- 15 Oct, 2016 1 commit
-
-
Fix @return description of git_patch_num_lines_in_hunk.
Davide Coppola committed
-
- 12 Oct, 2016 1 commit
-
-
Closes: https://github.com/libgit2/libgit2/issues/3959 Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
Igor Gnatenko committed
-
- 10 Oct, 2016 2 commits
-
-
Squelch example warnings, enable CI
Patrick Steinhardt committed -
Patrick Steinhardt committed
-