|
3602b573
|
2018-08-20T10:08:30
|
|
Document giterr_last() use only after error. #4772
|
|
5b0258ad
|
2018-08-19T23:01:38
|
|
Merge pull request #4768 from abyss7/master
Fix leak in index.c
|
|
cada553c
|
2018-08-19T15:54:10
|
|
Merge pull request #4754 from libgit2/ethomson/threads
threads::diff: use separate git_repository objects
|
|
2afd0185
|
2018-08-19T12:57:29
|
|
threads::iterator: use separate repository objects
Our thread policies state that we cannot re-use the `git_repository`
across threads. Our tests cannot deviate from that.
Courtesy of Ximin Luo, https://github.com/infinity0:
https://github.com/libgit2/libgit2/issues/4753#issuecomment-412247757
|
|
c1ef58ac
|
2018-08-17T15:17:07
|
|
Merge pull request #4766 from pks-t/pks/travis-remove-coverity
travis: remove Coverity cron job
|
|
581d5492
|
2018-08-16T22:45:43
|
|
Fix leak in index.c
|
|
622e12c1
|
2018-08-16T10:35:31
|
|
Merge pull request #4749 from neithernut/fix-git__linenlen-ub
parse: Do not initialize the content in context to NULL
|
|
43e7bf78
|
2018-08-16T10:27:49
|
|
Merge pull request #4750 from nelhage/nelhage-config-no-section
config_file: Don't crash on options without a section
|
|
6259e29e
|
2018-08-16T09:36:38
|
|
travis: remove Coverity cron job
With the recent addition of VSTS to our CI infrastructure, we now have
two cron jobs running regular Coverity analysis. It doesn't really make
a lot of sense to upload two different analysis on our sources to
Corverity, though:
- in the worst case, Coverity will be repeatedly confused when different
sets of sources get analyzed and uploaded
- in the best case, nothing is gained because the sources have already
been analyzed via the other job
Let's just use a single cron job for Coverity. Considering that VSTS
seems to be the more beefy and flexible platform, it is more likely to
be our future target CI platform. Thus, we retain its support for
Coverity and instead remove it from Travis.
|
|
227ace0f
|
2018-08-14T20:32:42
|
|
Merge pull request #4764 from tiennou/ci/coverity-only
ci: Correct the status code check so Coverity doesn't force-fail Travis
|
|
351ca661
|
2018-08-14T21:26:14
|
|
ci: Correct the status code check so Coverity doesn't force-fail Travis
Otherwise you get something like
Emitted 525 C/C++ compilation units (100%) successfully
525 C/C++ compilation units (100%) are ready for analysis
The cov-build utility completed successfully.
Build successfully submitted.
Received error code 200 from Coverity
travis_time:end:14cf6373:start=1534254309066933889,finish=1534254728190974302,duration=419124040413
The command "if [ -n "$COVERITY" ]; then ../ci/coverity.sh; fi" exited with 1.
travis_time:start:01ed61d4
$ if [ -z "$COVERITY" ]; then ../ci/build.sh && ../ci/test.sh; fi
travis_time:end:01ed61d4:start=1534254728197560961,finish=1534254728202711214,duration=5150253
The command "if [ -z "$COVERITY" ]; then ../ci/build.sh && ../ci/test.sh; fi" exited with 0.
Done. Your build exited with 1.
|
|
6698e056
|
2018-08-14T04:22:14
|
|
Fix the test and comment.
|
|
f1409500
|
2018-08-14T03:54:01
|
|
Write a test.
|
|
9913e2df
|
2018-08-09T09:49:33
|
|
Merge pull request #4760 from libgit2/ethomson/ci
ci: remove appveyor
|
|
658b8e8a
|
2018-08-09T09:39:39
|
|
readme: remove appveyor build badge
|
|
e9b2e434
|
2018-08-09T09:30:36
|
|
Merge pull request #4761 from pks-t/pks/aix-diff-oom
diff: fix OOM on AIX when finding similar deltas in empty diff
|
|
c65568d8
|
2018-08-09T12:48:26
|
|
diff: fix OOM on AIX when finding similar deltas in empty diff
The function `git_diff_find_similar` keeps a function of cache
similarity metrics signatures, whose size depends on the number of
deltas passed in via the `diff` parameter. In case where the diff is
empty and thus doesn't have any deltas at all, we may end up allocating
this cache via a call to `git__calloc(0, sizeof(void *))`. At least on
AIX, allocating 0 bytes will result in a `NULL` pointer being returned,
which causes us to erroneously return an OOM error.
Fix this situation by simply returning early in case where we are being
passed an empty diff, as we cannot find any similarities in that case
anyway.
|
|
3ce31df3
|
2018-08-06T16:33:15
|
|
ci: remove appveyor
|
|
9275d84c
|
2018-08-06T13:14:08
|
|
Merge pull request #4755 from pks-t/pks/travis-coverity-cron
travis: do not execute Coverity analysis for all cron jobs
|
|
b093bb56
|
2018-08-06T13:08:15
|
|
Merge pull request #4759 from pks-t/pks/ci-werror
ci: enable compilation with "-Werror"
|
|
9ada072e
|
2018-08-06T13:31:23
|
|
Merge pull request #4758 from pks-t/pks/smart-pkt-oob-read
smart_pkt: fix potential OOB-read when processing ng packet
|
|
90084657
|
2018-08-06T09:12:48
|
|
ci: enable compilation with "-Werror"
During the conversion of our CI scripts in bf418f09c (ci: refactor unix
ci build/test scripts, 2018-07-14), we accidentally dropped the
"-DENABLE_WERROR=ON" switch in our cmake invocation. Re-add it to help
us catch compiler warnings early.
|
|
0fcd0563
|
2018-08-06T12:00:21
|
|
odb: fix use of wrong printf formatters
The `git_odb_stream` members `declared_size` and `received_bytes` are
both of the type `git_off_t`, which we usually defined to be a 64 bit
signed integer. Thus, passing these members to "PRIdZ" formatters is not
correct, as they are not guaranteed to accept big enough numbers.
Instead, use the "PRId64" formatter, which is able to represent 64 bit
signed integers.
|
|
c9ad2506
|
2018-08-06T07:38:29
|
|
Merge pull request #4751 from nelhage/config-double-free
Fix a double-free in config parsing
|
|
0a6c13a2
|
2018-08-06T07:13:56
|
|
travis: do not execute Coverity analysis for all cron jobs
The new Travis cron job gets executed daily, but our current
configuration will cause each job to execute our Coverity script instead
of the default build and testing scripts. This cannot work, as Coverity
is heavily rate-limiting its API, so our cron builds are doomed to
always fail. What we want to do instead is execute our normal builds,
but add an additional Coverity jobs.
This can easily be done by adding another Coverity-specific job with a
conditional "type = cron", which sets the "COVERITY" environment
variable. Instead of checking the build type, we then simply check
whether "COVERITY" is set or not.
|
|
ec76a1aa
|
2018-08-05T14:37:08
|
|
Add a comment
|
|
019409be
|
2018-08-05T14:25:22
|
|
Don't error on missing section, just continue
|
|
d1919485
|
2018-08-05T11:01:14
|
|
threads::diff: use separate git_repository objects
Our thread policies state that we cannot re-use the `git_repository`
across threads. Our tests cannot deviate from that.
|
|
b8a67eda
|
2018-07-22T23:47:12
|
|
Fix a double-free in config parsing
|
|
c4d7fa95
|
2018-07-22T23:31:19
|
|
config_file: Don't crash on options without a section
|
|
d1bfe614
|
2018-08-04T19:30:40
|
|
parse: Do not initialize the content in context to NULL
String operations in libgit2 are supposed to never receive `NULL`, e.g.
they are not `NULL`-save. In the case of `git__linenlen()`, invocation
with `NULL` leads to undefined behavior.
In a `git_parse_ctx` however, the `content` field used in these
operations was initialized to `NULL` if the `git_parse_ctx_init()` was
called with `NULL` for `content` or `0` for `content_len`. For the
latter case, the initialization function even contained some logic for
initializing `content` with `NULL`.
This commit mitigates triggering undefined behavior by rewriting the
logic. Now `content` is always initialized to a non-null buffer. Instead
of a null buffer, an empty string is used for denoting an empty buffer.
|
|
64138b70
|
2018-08-03T11:13:10
|
|
Merge pull request #4728 from pks-t/pks/fuzzers
Fuzzers
|
|
835d6043
|
2018-08-03T10:01:59
|
|
ci: fix location of fuzzer corpora on VSTS
When using VSTS-based builds, we are in a different location than when
doing Travis builds. Due to this, the relative path to our fuzzer
corpora does not work on VSTS. Fix it by using `${SOURCE_DIR}` instead.
|
|
e38ddc90
|
2018-07-26T15:41:41
|
|
fuzzers: limit maximum pack object count
By default, libgit2 allows up to 2^32 objects when downloading a
packfile from a remote. For each of these objects, libgit2 will allocate
up to two small structs, which in total adds up to quite a lot of
memory. As a result, our fuzzers might run out of memory rather quick in
case where they receive as input a packfile with such a huge count of
objects.
Limit the packfile object count to 10M objects. This is sufficiently big
to still work with most largish repos (linux.git has around 6M objects
as of now), but small enough to not cause the fuzzer to OOM.
|
|
5db64e2f
|
2018-07-19T14:52:02
|
|
fuzzers: convert download_refs fuzzer to C
Convert the "download_refs" fuzzer from C++ to C. Rename the source file
to have it be picked up by our build system.
|
|
730c0edb
|
2018-07-19T14:21:35
|
|
fuzzers: import download_refs fuzzer from oss-fuzz
This is a direct copy of the code from google/oss-fuzz, written by
Nelson Elhage (@nelhage). Note that due to the ".cc" ending, the file
will not yet be picked up by the build system. This is intended, as
currently that file is partly written in C++, requiring a conversion to
C.
|
|
de53972f
|
2018-07-20T11:07:47
|
|
fuzzers: avoid use of libgit2 internals in packfile_raw
The packfile_raw fuzzer is using some internal APIs from libgit2, which
makes it hard to compile it as part of the oss-fuzz project. As oss-fuzz
requires us to link against the C++ FuzzingEngine library, we cannot use
"-DBUILD_FUZZERS=ON" directly but instead have to first compile an
object from our fuzzers and then link against the C++ library. Compiling
the fuzzer objects thus requires an external invocation of CC, and we
certainly don't want to do further black magic by adding libgit2's
private source directory to the header include path.
To fix the issue, convert the code to not use any internal APIs. Besides
some headers which we have to add now, this also requires us to change
to the hashing function of the ODB. Note that this will change the
hashing result, as we have previously not prepended the object header to
the data that is to be hashed. But this shouldn't matter in practice, as
we don't care for the hash value anyway.
|
|
12804c46
|
2018-07-20T12:24:08
|
|
cmake: remove USE_SANITIZER and USE_COVERAGE options
Both the USE_SANITIZER and USE_COVERAGE options are convenience options
that turn on a set of CFLAGS. Despite our own set of CFLAGS required to
build libgit2, we have no real business to mess with them, though, as
they can easily be passed in by the user via specifying the CFLAGS
environment variable. The reasoning behind not providing them is that as
soon as we start adding those for some usecases, users might ask for
other sets of CFLAGS catering to their specific need in another usecase.
Thus, we do not want to support them here.
|
|
ad0cb297
|
2018-07-20T12:17:42
|
|
cmake: fix the unholy options alignment mess
|
|
bf3382d5
|
2018-07-19T15:22:18
|
|
cmake: remove need to add "-fsanitize=fuzzer" flag for fuzzers
Right now, users are being instrucded to add the
"-DCMAKE_EXE_LINKER_FLAGS=-fsanitize=fuzzer" flag when they want to
build our fuzzers. This is error-prone and user unfriendly. Instead,
just add the flag to our fuzzers' build instructions so that it happens
automatically. Adjust the README accordingly.
|
|
186a7ba5
|
2018-07-19T15:13:40
|
|
cmake: error out if required C flags are not supported
We do want to notify users compiling our source code early on if they
try to use C flags which aren't supported. Add a new macro `AddCFlag`,
which results in a fatal error in case the flag is not supported, and
use it for our fuzzing flags.
|
|
07cf8b38
|
2018-07-20T09:03:10
|
|
cmake: use C90 standard for our fuzzing targets
Like all our other internal code, we want to force the use of C90 for
our fuzzers. Do so by setting the "C_STANDARD" property of our fuzzing
targets.
|
|
ad087303
|
2018-07-20T14:20:07
|
|
fuzzers: move readme to docs/fuzzing.md
|
|
59328ed8
|
2018-07-19T13:29:46
|
|
fuzzers: rename "fuzz" directory to match our style
Our layout uses names like "examples" or "tests" which is why the "fuzz"
directory doesn't really fit in here. Rename the directory to be called
"fuzzers" instead. Furthermore, we rename the fuzzer "fuzz_packfile_raw"
to "packfile_raw_fuzzer", which is also in line with the already
existing fuzzer at google/oss-fuzz.
While at it, rename the "packfile_raw" fuzzer to instead just be called
"packfile" fuzzer.
|
|
60e610a2
|
2018-01-04T15:36:22
|
|
fuzzers: add build support and instructions
This change adds support for building a fuzz target for exercising the
packfile parser, as well as documentation. It also runs the fuzzers in
Travis to avoid regressions.
|
|
0cf75467
|
2018-08-02T21:01:10
|
|
Merge pull request #4746 from libgit2/ethomson/ci
ci: run VSTS builds on master and maint branches
|
|
cd788314
|
2018-08-02T20:43:21
|
|
ci: run VSTS builds on master and maint branches
|
|
ba55592f
|
2018-08-02T20:34:56
|
|
Merge pull request #4743 from Agent00Log/dev/winbugfixes
Windows: default credentials / fallback credential handling
|
|
209c3fe1
|
2018-08-02T16:42:59
|
|
Merge pull request #4745 from libgit2/ethomson/vsts-build-badge
ci: add VSTS build badge to README
|
|
a1ae41b8
|
2018-08-02T14:57:54
|
|
ci: add VSTS build badge to README
|
|
7bed2f34
|
2018-08-02T15:53:42
|
|
Merge pull request #4744 from libgit2/ethomson/travis
ci: set PKG_CONFIG_PATH for travis
|
|
abf53363
|
2018-08-02T14:47:03
|
|
ci: set PKG_CONFIG_PATH on travis
Homebrew's formula for openssl is "keg-only", which means it does not
install it into /usr/local. On macOS builds, we need to set
PKG_CONFIG_PATH to include it.
|
|
5d0070e1
|
2018-08-02T14:23:23
|
|
Merge pull request #4723 from libgit2/ethomson/ci
CI: Refactor and introduce VSTS builds
|
|
ccbffbae
|
2018-07-30T13:39:21
|
|
Only unitialize if the call to CoInitializeEx was successful
|
|
4ad108d1
|
2018-07-30T10:32:01
|
|
Merge pull request #4742 from neithernut/revwalk-remove_tautological_condition
revwalk: remove tautologic condition for hiding a commit
|
|
d076db11
|
2018-07-29T17:26:44
|
|
ci: run coverity from a nightly VSTS build
|
|
6b92368c
|
2018-07-28T22:29:53
|
|
ci: run coverity from travis's cron
Instead of trying to run coverity builds during the regular PR process,
run them during a regularly scheduled cron process. These only need to
run nightly, so it makes sense to bring them out of the PR process.
|
|
a4ffbae4
|
2018-07-29T11:46:05
|
|
revwalk: remove tautologic condition for hiding a commit
The contition cannot be reached with `commit->uninteresting` being true:
either a `break` or a `continue` statement will be hit in this case.
|
|
24d17562
|
2018-07-27T16:40:44
|
|
ci: remove unused old ci scripts
|
|
24b8dd82
|
2018-07-27T12:31:32
|
|
ci: move travis to the new scripts
|
|
b00a09b0
|
2018-07-27T20:14:27
|
|
Merge pull request #4731 from libgit2/ethomson/wintls_fix
winhttp: retry erroneously failing requests
|
|
465f8b51
|
2018-07-26T15:14:37
|
|
ci: move appveyor to new scripts
|
|
6fb63c92
|
2018-07-26T14:29:41
|
|
ci: use docker containers from libgit2 account
|
|
f7bb4ff8
|
2018-07-26T15:06:01
|
|
ci: use a single setup script for mingw
|
|
dc6e80e2
|
2018-07-26T14:04:19
|
|
ci: perform clang builds on Linux
|
|
6eb97b6b
|
2018-07-25T01:04:55
|
|
ci: dissociate test from leaks process
The leaks process is not good about handling children. Ensure that its
child is `nohup`ed so that the grandparent shell won't wait for it to
exit.
|
|
230eeda8
|
2018-07-21T10:49:23
|
|
ci: some additional debugging
|
|
b00672b9
|
2018-07-20T19:47:40
|
|
ci: enable leak checking on osx
|
|
afecd15c
|
2018-07-20T18:09:38
|
|
ci: msvc leak-checking
|
|
7f12c123
|
2018-07-20T17:20:15
|
|
ci: xcode leaks leak-checking
|
|
219512e7
|
2018-07-20T14:14:16
|
|
buf tests: allocate a smaller size for the oom
On Linux (where we run valgrind) allocate a smaller buffer, but still an
insanely large size. This will cause malloc to fail but will not cause
valgrind to report a likely error with a negative-sized malloc.
Keep the original buffer size on non-Linux platforms: this is
well-tested on them and changing it may be problematic. On macOS, for
example, using the new size causes `malloc` to print a warning to
stderr.
|
|
6d6700d2
|
2018-07-20T19:01:55
|
|
ci: valgrind leak-checking
|
|
67f5304f
|
2018-07-14T12:42:50
|
|
ci: introduce vsts builds
|
|
42f83840
|
2018-07-26T15:25:44
|
|
Merge pull request #4721 from nelhage/max-objects
Add a configurable limit to the max pack size that will be indexed
|
|
9e588060
|
2018-07-14T13:03:16
|
|
ci: scripts to setup mingw build environment
|
|
87342404
|
2018-07-14T12:35:02
|
|
ci: set up a macos host
Script to set up dependencies on a macOS build system.
|
|
5bb2087b
|
2018-07-14T12:34:05
|
|
ci: setup a linux host
Sets up a linux host to prepare for a build.
|
|
451b0017
|
2018-07-14T12:25:32
|
|
ci: improved flexibility for citest.sh
Refactor citest.sh to enable local testing by developers.
|
|
bf418f09
|
2018-07-14T12:24:40
|
|
ci: refactor unix ci build/test scripts
|
|
e2cc5b6d
|
2018-07-14T12:22:47
|
|
ci: move tests into citest.ps1
Add citest.ps1 PowerShell script to run the tests.
|
|
3b6281fa
|
2018-07-14T12:22:16
|
|
ci: Windows PowerShell build script
|
|
ce798b25
|
2018-07-04T10:56:56
|
|
tests: simplify cmake test configuration
Simplify the names for the tests, removing the unnecessary
"libgit2-clar" prefix. Make "all" the new default test run, and include
the online tests by default (since HTTPS should always be enabled).
For the CI tests, create an offline-only test, then the various online
tests.
|
|
7d3930a1
|
2018-07-26T11:15:23
|
|
Merge pull request #4739 from pks-t/pks/mbedtls-unused-variable
mbedtls: remove unused variable "cacert"
|
|
d4198d4d
|
2018-07-26T12:11:34
|
|
mbedtls: remove unused variable "cacert"
In commit 382ed1e87 (mbedtls: load default CA certificates, 2018-03-29),
the function `git_mbedtls_stream_global_init` was refactored to call out
to `git_mbedtls__set_cert_location` instead of setting up the
certificates itself. The conversion forgot to remove the now-unused
"cacert" variable, which is now only getting declared to be free'd at
the end of the function. Remove it.
|
|
8c21cb5c
|
2018-07-26T09:52:32
|
|
Fix fallback credentials: The call to CoInitializeEx fails if it was previously been set to a different mode.
|
|
c9dc30ff
|
2018-07-26T09:52:21
|
|
Fix default credentials: The WinHttpSetCredentials auth scheme must only be one of the supported schemes.
|
|
45a78977
|
2018-07-23T12:38:40
|
|
Merge pull request #4732 from libgit2/ethomson/leaks
Squash some leaks
|
|
2fabb622
|
2018-07-21T01:36:46
|
|
mbedtls: free stream on shutdown
|
|
9e002cd5
|
2018-07-21T01:11:58
|
|
mbedtls: make ciphers_list a static array
Instead of allocating the ciphers_list, make it a static array. This
prevents us from leaking it or having to manage its memory.
|
|
4e62d26f
|
2018-07-21T00:45:24
|
|
mbedtls: free ciphers_list
|
|
defa9709
|
2018-07-21T00:41:38
|
|
mbedtls: check allocations
|
|
d285de73
|
2018-07-20T21:52:24
|
|
push tests: deeply free the specs
Don't just free the spec vector, also free the specs themselves.
|
|
dad99881
|
2018-07-20T21:51:36
|
|
push tests: deeply free the push status
Don't just free the push status structure, actually free the strings that were
strdup'd into the struct as well.
|
|
ca2eb460
|
2018-07-20T21:50:58
|
|
smart subtransport: free url when resetting stream
Free the url field when resetting the stream to avoid leaking it.
|
|
32810348
|
2018-07-20T08:43:54
|
|
Use UINT32_MAX as the default object limit
This replicates the old behavior of limiting to 2³² by default.
|
|
dc371e3c
|
2018-07-20T08:20:48
|
|
winhttp: retry erroneously failing requests
Early Windows TLS 1.2 implementations have an issue during key exchange
with OpenSSL implementations that cause negotiation to fail with the
error "the buffer supplied to a function was too small."
This is a transient error on the connection, so when that error is
received, retry up to 5 times to create a connection to the remote
server before actually giving up.
|
|
ea9e2c1a
|
2018-07-20T13:06:56
|
|
Merge pull request #4692 from tiennou/examples/checkout
Add a checkout example
|
|
0652abaa
|
2018-07-20T12:56:49
|
|
Merge pull request #4702 from tiennou/fix/coverity
Assorted Coverity fixes
|
|
19bed3e2
|
2018-07-19T13:00:42
|
|
smart_pkt: fix potential OOB-read when processing ng packet
OSS-fuzz has reported a potential out-of-bounds read when processing a
"ng" smart packet:
==1==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6310000249c0 at pc 0x000000493a92 bp 0x7ffddc882cd0 sp 0x7ffddc882480
READ of size 65529 at 0x6310000249c0 thread T0
SCARINESS: 26 (multi-byte-read-heap-buffer-overflow)
#0 0x493a91 in __interceptor_strchr.part.35 /src/llvm/projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:673
#1 0x813960 in ng_pkt libgit2/src/transports/smart_pkt.c:320:14
#2 0x810f79 in git_pkt_parse_line libgit2/src/transports/smart_pkt.c:478:9
#3 0x82c3c9 in git_smart__store_refs libgit2/src/transports/smart_protocol.c:47:12
#4 0x6373a2 in git_smart__connect libgit2/src/transports/smart.c:251:15
#5 0x57688f in git_remote_connect libgit2/src/remote.c:708:15
#6 0x52e59b in LLVMFuzzerTestOneInput /src/download_refs_fuzzer.cc:145:9
#7 0x52ef3f in ExecuteFilesOnyByOne(int, char**) /src/libfuzzer/afl/afl_driver.cpp:301:5
#8 0x52f4ee in main /src/libfuzzer/afl/afl_driver.cpp:339:12
#9 0x7f6c910db82f in __libc_start_main /build/glibc-Cl5G7W/glibc-2.23/csu/libc-start.c:291
#10 0x41d518 in _start
When parsing an "ng" packet, we keep track of both the current position
as well as the remaining length of the packet itself. But instead of
taking care not to exceed the length, we pass the current pointer's
position to `strchr`, which will search for a certain character until
hitting NUL. It is thus possible to create a crafted packet which
doesn't contain a NUL byte to trigger an out-of-bounds read.
Fix the issue by instead using `memchr`, passing the remaining length as
restriction. Furthermore, verify that we actually have enough bytes left
to produce a match at all.
OSS-Fuzz-Issue: 9406
|
|
fa401a32
|
2018-07-19T08:20:04
|
|
Merge pull request #4704 from nelhage/no-pkt-pack
Remove GIT_PKT_PACK entirely
|