|
322c15ee
|
2020-08-01T18:24:41
|
|
Make the pack and mwindow implementations data-race-free
This change fixes a packfile heap corruption that can happen when
interacting with multiple packfiles concurrently across multiple
threads. This is exacerbated by setting a lower mwindow open file limit.
This change:
* Renames most of the internal methods in pack.c to clearly indicate
that they expect to be called with a certain lock held, making
reasoning about the state of locks a bit easier.
* Splits the `git_pack_file` lock in two: the one in `git_pack_file`
only protects the `index_map`. The protection to `git_mwindow_file` is
now in that struct.
* Explicitly checks for freshness of the `git_pack_file` in
`git_packfile_unpack_header`: this allows the mwindow implementation
to close files whenever there is enough cache pressure, and
`git_packfile_unpack_header` will reopen the packfile if needed.
* After a call to `p_munmap()`, the `data` and `len` fields are poisoned
with `NULL` to make use-after-frees more evident and crash rather than
being open to the possibility of heap corruption.
* Adds a test case to prevent this from regressing in the future.
Fixes: #5591
|
|
4ae41f9c
|
2020-08-02T16:26:25
|
|
Make the odb race-free
This change adds all the necessary locking to the odb to avoid races in
the backends.
Part of: #5592
|
|
ef6de8d5
|
2020-11-27T14:46:38
|
|
Merge pull request #5704 from lhchavez/ssh-raw-certificate
Also add the raw hostkey to `git_cert_hostkey`
|
|
079a40ca
|
2020-11-27T14:36:12
|
|
Merge pull request #5715 from lhchavez/fix-non-debug-build
Fix the `ENABLE_WERROR=ON` build in Groovy Gorilla (gcc 10.2)
|
|
5db304f0
|
2020-11-27T06:17:57
|
|
Fix the non-debug build in Groovy Gorilla (gcc 10.2)
The release build has been failing with the following error:
```shell
FAILED: src/CMakeFiles/git2internal.dir/hash.c.o
/usr/bin/cc -DHAVE_QSORT_R_GNU -DSHA1DC_CUSTOM_INCLUDE_SHA1_C=\"common.h\" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C=\"common.h\" -DSHA1DC_NO_STANDARD_INCLUDES=1 -D_FILE_OFFSET_BITS=64 -Isrc -I../src -I../include -I../deps/pcre -I../deps/http-parser -D_GNU_SOURCE -fsanitize=thread -fno-optimize-sibling-calls -fno-omit-frame-pointer -Werror -Wall -Wextra -fvisibility=
hidden -fPIC -Wno-documentation-deprecated-sync -Wno-missing-field-initializers -Wstrict-aliasing -Wstrict-prototypes -Wdeclaration-after-statement -Wshift-count-overflow -Wunused-const-variable -Wunused-function -Wint-conversion -Wformat -Wformat-security -Wmissing-declarations -g -D_DEBUG -O0 -std=gnu90 -MD -MT src/CMakeFiles/git2internal.dir/hash.c.o -MF s
rc/CMakeFiles/git2internal.dir/hash.c.o.d -o src/CMakeFiles/git2internal.dir/hash.c.o -c ../src/hash.c
../src/hash.c: In function ‘git_hash_init’:
../src/hash.c:47:1: error: control reaches end of non-void function [-Werror=return-type]
47 | }
| ^
../src/hash.c: In function ‘git_hash_update’:
../src/hash.c:58:1: error: control reaches end of non-void function [-Werror=return-type]
58 | }
| ^
../src/hash.c: In function ‘git_hash_final’:
../src/hash.c:68:1: error: control reaches end of non-void function [-Werror=return-type]
68 | }
| ^
../src/hash.c: At top level:
cc1: note: unrecognized command-line option ‘-Wno-documentation-deprecated-sync’ may have been intended to silence earlier diagnostics
cc1: all warnings being treated as errors
[11/533] Building C object src/CMakeFiles/git2internal.dir/odb_pack.c.o
ninja: build stopped: subcommand failed.
```
The compiler _should_ be able to figure out that there is no way to reach the
end of the non-void function since `GIT_ASSERT(0)` expands to either `assert()`
or an unconditional `return -1;` (after doing constant folding and stuff,
depending on the debug level). But it's not doing so at the moment, so let's
help it.
|
|
29fe5f61
|
2020-11-22T18:25:00
|
|
Also add the raw hostkey to `git_cert_hostkey`
`git_cert_x509` has the raw encoded certificate. Let's do the same for
the SSH certificate for symmetry.
|
|
4fadd594
|
2020-11-27T12:00:57
|
|
Merge pull request #5447 (lhchavez:git-odb-options)
|
|
f847fa7b
|
2020-02-16T02:00:56
|
|
midx: Support multi-pack-index files in odb_pack.c
This change adds support for reading multi-pack-index files from the
packfile odb backend. This also makes git_pack_file objects open their
backing failes lazily in more scenarios, since the multi-pack-index can
avoid having to open them in some cases (yay!).
This change also refreshes the documentation found in src/odb_pack.c to
match the updated code.
Part of: #5399
|
|
fa618a59
|
2020-11-27T11:36:58
|
|
Merge pull request #5327 from libgit2/ethomson/assert
Introduce GIT_ASSERT macros
|
|
64e2b6ef
|
2020-04-05T22:28:19
|
|
vector: use GIT_ASSERT
|
|
055fbf6d
|
2020-04-05T21:55:59
|
|
revert: use GIT_ASSERT
|
|
59f46913
|
2020-04-05T21:55:13
|
|
reset: use GIT_ASSERT
|
|
63baed37
|
2020-04-05T22:23:54
|
|
tsort: remove assertion
|
|
36adde56
|
2020-04-05T21:17:42
|
|
repository: use GIT_ASSERT
|
|
d4196c06
|
2020-04-05T19:42:16
|
|
remote: use GIT_ASSERT
|
|
8613133b
|
2020-04-05T22:21:30
|
|
tree: use GIT_ASSERT
|
|
89ee31a8
|
2020-04-05T19:35:19
|
|
refspec: use GIT_ASSERT
|
|
7f0cabd1
|
2020-04-05T19:33:22
|
|
refs: use GIT_ASSERT
|
|
2ab26a98
|
2020-04-05T22:17:41
|
|
transport: use GIT_ASSERT
|
|
7d75e1c7
|
2020-04-05T19:28:13
|
|
reflog: use GIT_ASSERT
|
|
98a4f278
|
2020-04-05T21:38:42
|
|
refdb_fs: use GIT_ASSERT
|
|
c6ebdb29
|
2020-11-22T09:43:06
|
|
win32: use GIT_ASSERT
|
|
d42e4d5f
|
2020-04-05T22:16:57
|
|
transaction: use GIT_ASSERT
|
|
8d66d57f
|
2020-04-05T19:20:01
|
|
refdb: use GIT_ASSERT
|
|
690ff9cd
|
2020-04-05T19:17:58
|
|
rebase: use GIT_ASSERT
|
|
9083a0e6
|
2020-04-05T22:15:21
|
|
trace: use GIT_ASSERT
|
|
00e57f64
|
2020-04-05T19:15:11
|
|
reader: use GIT_ASSERT
|
|
9cd6481e
|
2020-04-05T19:14:35
|
|
posix: use GIT_ASSERT
|
|
4f5f1127
|
2020-11-22T00:01:09
|
|
transports: use GIT_ASSERT
|
|
e1af2e55
|
2020-04-05T22:15:06
|
|
tag: use GIT_ASSERT
|
|
fc983542
|
2020-04-05T22:12:57
|
|
sysdir: use GIT_ASSERT
|
|
07a3c992
|
2020-11-21T23:52:39
|
|
streams: use GIT_ASSERT
|
|
c06e7987
|
2020-04-05T22:12:20
|
|
submodule: use GIT_ASSERT
|
|
203832c3
|
2020-11-21T23:04:04
|
|
strarray: use GIT_ASSERT
|
|
3ff56dae
|
2020-11-21T23:35:09
|
|
hash: use GIT_ASSERT
|
|
1e3c2d9c
|
2020-04-05T22:07:11
|
|
status: use GIT_ASSERT
|
|
9522de90
|
2020-04-05T22:06:25
|
|
stash: use GIT_ASSERT
|
|
cac36006
|
2020-04-05T22:30:20
|
|
zstream: use GIT_ASSERT
|
|
9cf2c9dc
|
2020-04-05T22:05:40
|
|
signature: use GIT_ASSERT
|
|
42594f3f
|
2020-04-05T22:00:36
|
|
signature: use GIT_ASSERT
|
|
0165e885
|
2020-04-05T22:29:56
|
|
worktree: use GIT_ASSERT
|
|
ef6b12b0
|
2020-04-05T21:58:40
|
|
revwalk: use GIT_ASSERT
|
|
5bd139e9
|
2020-04-05T21:57:22
|
|
revparse: use GIT_ASSERT
|
|
c59fbafd
|
2020-04-05T17:06:37
|
|
merge: use GIT_ASSERT
|
|
237657f4
|
2020-04-05T17:03:41
|
|
map: use GIT_ASSERT
|
|
23e38fd3
|
2020-04-05T17:02:17
|
|
mailmap: use GIT_ASSERT
|
|
79b0c8c8
|
2020-11-21T23:29:29
|
|
iterator: use GIT_ASSERT
|
|
cd2fe662
|
2020-04-05T16:56:55
|
|
indexer: use GIT_ASSERT
|
|
1fa339be
|
2020-04-05T16:50:13
|
|
index: use GIT_ASSERT
|
|
3a6d04a3
|
2020-04-05T16:44:42
|
|
ignore: use GIT_ASSERT
|
|
01c64945
|
2020-04-05T16:43:55
|
|
hashsig: use GIT_ASSERT
|
|
253a873b
|
2020-04-05T16:33:54
|
|
hash: use GIT_ASSERT
|
|
03623b47
|
2020-04-05T16:28:03
|
|
futils: use GIT_ASSERT
|
|
bc54898f
|
2020-04-05T16:27:30
|
|
filter: use GIT_ASSERT
|
|
33c5c513
|
2020-04-05T16:30:00
|
|
filebuf: use GIT_ASSERT
|
|
a08bd547
|
2020-04-05T16:24:26
|
|
fetchhead: use GIT_ASSERT
|
|
9502f8e9
|
2020-04-05T19:13:07
|
|
pool: use GIT_ASSERT
|
|
4b093e75
|
2020-04-05T18:36:23
|
|
pathspec: use GIT_ASSERT
|
|
16b1a756
|
2020-04-05T18:33:55
|
|
path: use GIT_ASSERT
|
|
2cfa31c4
|
2020-04-05T18:30:07
|
|
path: remove unused git_path_topdir
|
|
1a724625
|
2020-04-05T18:27:51
|
|
patch: use GIT_ASSERT
|
|
4dba9303
|
2020-11-22T10:42:41
|
|
pack-objects: use GIT_ASSERT
|
|
7cd0bf65
|
2020-04-05T18:26:52
|
|
pack: use GIT_ASSERT
|
|
87d37896
|
2020-04-05T17:35:19
|
|
oid: use GIT_ASSERT
|
|
a072a025
|
2020-04-05T17:34:12
|
|
odb_pack: use GIT_ASSERT
|
|
3bb9916c
|
2020-04-05T17:33:06
|
|
odb_mempack: use GIT_ASSERT
|
|
9d1cfb2f
|
2020-04-05T17:32:52
|
|
odb_loose: use GIT_ASSERT
|
|
931fd6b0
|
2020-04-05T17:29:13
|
|
odb: use GIT_ASSERT
|
|
4300aa4b
|
2020-04-05T17:24:32
|
|
object: use GIT_ASSERT
|
|
6718ad9f
|
2020-04-05T17:20:46
|
|
notes: use GIT_ASSERT
|
|
05816a98
|
2020-04-05T17:20:08
|
|
netops: use GIT_ASSERT
|
|
ea7c807a
|
2020-04-05T17:18:46
|
|
net: use GIT_ASSERT
|
|
a3e8b7cd
|
2020-04-05T17:18:20
|
|
mwindow: use GIT_ASSERT
|
|
69fb8979
|
2020-11-21T22:54:26
|
|
midx: use GIT_ASSERT
|
|
f16f2927
|
2020-04-05T17:09:59
|
|
merge_file: use GIT_ASSERT
|
|
61f33f3e
|
2020-04-05T17:08:42
|
|
merge_driver: use GIT_ASSERT
|
|
59565a05
|
2020-04-05T16:23:40
|
|
errors: use GIT_ASSERT
|
|
5d6c2f26
|
2020-04-05T14:59:54
|
|
diff: use GIT_ASSERT
|
|
81609902
|
2020-04-05T14:53:50
|
|
describe: use GIT_ASSERT
|
|
65c23e9c
|
2020-04-05T14:53:08
|
|
delta: use GIT_ASSERT
|
|
00974bca
|
2020-04-05T14:52:48
|
|
date: use GIT_ASSERT
|
|
e7604da8
|
2020-04-05T14:51:56
|
|
config: use GIT_ASSERT
|
|
3b2153fe
|
2020-04-05T14:42:44
|
|
commit: use GIT_ASSERT
|
|
d4384977
|
2020-04-05T14:38:20
|
|
clone: use GIT_ASSERT
|
|
5d8b75fa
|
2020-04-05T14:37:22
|
|
cherrypick: use GIT_ASSERT
|
|
266f26ed
|
2020-04-05T14:35:23
|
|
checkout: use GIT_ASSERT
|
|
e0f3c33d
|
2020-04-05T11:22:19
|
|
buffer: git_buf_copy_cstr should return a value
`git_buf_copy_cstr` is called with user-input, and wants to sanity-check
that input. Allow it to return a value if the input was malformed in a
way that we cannot cope.
|
|
cb4bfbc9
|
2020-04-05T11:07:54
|
|
buffer: git_buf_sanitize should return a value
`git_buf_sanitize` is called with user-input, and wants to sanity-check
that input. Allow it to return a value if the input was malformed in a
way that we cannot cope.
|
|
a6dd5865
|
2020-04-05T10:23:20
|
|
buffer: use GIT_ASSERT
|
|
7d24070d
|
2020-04-05T10:14:28
|
|
branch: use GIT_ASSERT
|
|
abb7a7e4
|
2020-04-05T10:11:34
|
|
blob: use GIT_ASSERT
|
|
efab78cd
|
2020-04-05T10:09:11
|
|
blame: use GIT_ASSERT
|
|
b44b262b
|
2020-04-05T10:07:09
|
|
attr_file: use GIT_ASSERT
|
|
7b2f94bf
|
2020-04-05T10:04:52
|
|
attr: use GIT_ASSERT
|
|
c6e84bce
|
2020-04-05T09:49:28
|
|
apply: use GIT_ASSERT
|
|
f60ebfcb
|
2020-04-04T23:31:05
|
|
annotated_commit: use GIT_ASSERT
|
|
b8cdc9c9
|
2020-11-24T09:27:41
|
|
ci: truly really absolutely run coverity
|
|
ab3c7ba5
|
2020-11-24T09:20:53
|
|
ci: really truly run coverity
|
|
bcf11f6a
|
2020-11-24T08:49:38
|
|
ci: really, really correct usage for coverity
|
|
05536454
|
2020-11-24T00:54:39
|
|
ci: really correct container usage for coverity
|