|
bfec6526
|
2018-09-02T11:38:43
|
|
git_remote_prune to be O(n * logn)
|
|
df2f276e
|
2018-08-26T13:22:55
|
|
Merge pull request #4765 from tiennou/fix/macos-qsort_r
util: make the qsort_r check work on macOS
|
|
2494b117
|
2018-08-26T12:09:18
|
|
Merge pull request #4782 from libgit2/ethomson/fuzzer
fuzzer: update for indexer changes
|
|
6d6bec0c
|
2018-08-26T11:52:21
|
|
fuzzer: update for indexer changes
|
|
85eb2cb6
|
2018-08-26T11:33:42
|
|
Merge pull request #4727 from libgit2/cmn/null-oid-existing-tree
tree: accept null ids in existing trees when updating
|
|
50186ce8
|
2018-08-26T11:26:45
|
|
Merge pull request #4374 from pks-t/pks/pack-file-verify
Pack file verification
|
|
1a9cc182
|
2018-08-17T15:56:30
|
|
util: make the qsort_r check work on macOS
This performs a compile-check by using CMake support, to differentiate the GNU
version from the BSD version of qsort_r.
Module taken from 4f252abea5f1d17c60f6ff115c9c44cc0b6f1df6, which I've checked
against CMake 2.8.11.
|
|
8856337b
|
2018-08-24T10:58:54
|
|
Merge pull request #4777 from pks-t/pks/cmake-iconv-via-libc
cmake: detect and use libc-provided iconv
|
|
9a193102
|
2018-08-24T11:01:39
|
|
Merge pull request #4774 from tiennou/fix/clang-analyzer
Coverity flavored clang analyzer fixes
|
|
fd7ab1d7
|
2018-08-24T09:47:09
|
|
Merge pull request #4776 from pks-t/pks/test-index-invalid-filemode
tests: verify adding index conflicts with invalid filemodes fails
|
|
503af775
|
2018-08-24T10:08:09
|
|
Merge pull request #4769 from tiennou/fix/worktree-unlock
worktree: unlock should return 1 when the worktree isn't locked
|
|
2e2d8c64
|
2018-08-24T09:53:39
|
|
cmake: detect and use libc-provided iconv
While most systems provide a separate iconv library against which
applications can link, musl based systems do not provide such a library.
Instead, iconv functions are directly included in the C library. As our
current CMake module to locate the iconv library only checks whether a
library exists somewhere in the typical library directories, we will
never build libgit2 with libiconv support on such systems.
Extend the iconv module to also search whether libc provides iconv
functions, which we do by checking whether the `iconv_open` function
exists inside of libc. If this is the case, we will default to use the
libc provided one instead of trying to use a separate libiconv. While
this changes which iconv we use on systems where both libc and an
external libiconv exist, to the best of my knowledge common systems only
provide either one or the other.
Note that libiconv support in musl is held kind of basic. To quote musl
libc's page on functional differences from glibc [1]:
The iconv implementation musl is very small and oriented towards
being unobtrusive to static link. Its character set/encoding
coverage is very strong for its size, but not comprehensive like
glibc’s.
As we assume iconv to be a lot more capable than what musl provides,
some of our tests will fail if using iconv on musl-based platforms.
[1]: https://wiki.musl-libc.org/functional-differences-from-glibc.html
|
|
0036993b
|
2018-08-24T09:29:32
|
|
Merge pull request #4752 from nelhage/fuzz-config
Add a fuzzer for config files
|
|
3a1f5df8
|
2018-08-24T09:15:29
|
|
tests: verify adding index conflicts with invalid filemodes fails
Commit 581d5492f (Fix leak in index.c, 2018-08-16) was fixing a memory
leak in our code adding conflicts to the index when the added index
entries have an invalid file mode. The memory leak was previously
undiscovered as there are no tests covering this scenario, which is now
being added by this commit.
|
|
296cb5e6
|
2018-08-24T09:07:01
|
|
Merge pull request #4763 from cschlack/fix_ng_packets
Fix 'invalid packet line' for ng packets containing errors
|
|
1c949ce1
|
2018-08-21T02:11:32
|
|
transport/http: do not return success if we failed to get a scheme
Otherwise we return a NULL context, which will get dereferenced in
apply_credentials.
|
|
22d013b6
|
2018-08-21T01:55:56
|
|
remote: set the error before cleanup
Otherwise we'll return stack data to the caller.
|
|
ad95873b
|
2018-08-21T01:41:05
|
|
mailmap: Undefined or garbage value returned to caller
In case there was nothing to parse in the buf, we'd return uninitialized
stack data.
|
|
aa8cb586
|
2018-08-21T01:12:11
|
|
revwalk: The left operand of '<' is a garbage value
At line 594, we do this :
if (error < 0)
return error;
but if nothing was pushed in a GIT_SORT_TIME revwalk, we'd return
uninitialized stack data.
|
|
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
|
|
50dd7fea
|
2018-08-11T13:06:14
|
|
Fix 'invalid packet line' for ng packets containing errors
|
|
59c2e70e
|
2018-08-17T00:51:51
|
|
worktree: unlock should return 1 when the worktree isn't locked
The documentation states that git_worktree_unlock returns 0 on success,
and 1 on success if the worktree wasn't locked. Turns out we were
returning 0 in any of those cases.
|
|
581d5492
|
2018-08-16T22:45:43
|
|
Fix leak in index.c
|
|
f556dea6
|
2018-08-16T15:10:51
|
|
Add a proper write loop
|
|
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.
|
|
b8d4578a
|
2018-08-14T04:01:30
|
|
Add a copyright header.
|
|
298f5df6
|
2018-08-14T04:01:04
|
|
Further review comments, fix the build
|
|
8189642d
|
2018-08-14T03:55:58
|
|
Reformat
|
|
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
|
|
bcfa762b
|
2018-08-05T03:14:56
|
|
Add a config file to the corpus
|
|
1a8e22e8
|
2018-07-22T23:48:53
|
|
Add a config file fuzzer
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
f00db9ed
|
2018-07-27T12:00:37
|
|
tree: rename from_tree to validate and clarify the tree in the test
|
|
f7bb4ff8
|
2018-07-26T15:06:01
|
|
ci: use a single setup script for mingw
|
|
6fb63c92
|
2018-07-26T14:29:41
|
|
ci: use docker containers from libgit2 account
|
|
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
|