https://github.com/git/git
Revision 34ace8bad02bb14ecc5b631f7e3daaa7a9bba7d9 authored by Patrick Steinhardt on 01 December 2022, 14:45:27 UTC, committed by Junio C Hamano on 05 December 2022, 06:14:16 UTC
It is possible to trigger an integer overflow when parsing attribute
names when there are more than 2^31 of them for a single pattern. This
can either lead to us dying due to trying to request too many bytes:

     blob=$(perl -e 'print "f" . " a=" x 2147483649' | git hash-object -w --stdin)
     git update-index --add --cacheinfo 100644,$blob,.gitattributes
     git attr-check --all file

    =================================================================
    ==1022==ERROR: AddressSanitizer: requested allocation size 0xfffffff800000032 (0xfffffff800001038 after adjustments for alignment, red zones etc.) exceeds maximum supported size of 0x10000000000 (thread T0)
        #0 0x7fd3efabf411 in __interceptor_calloc /usr/src/debug/gcc/libsanitizer/asan/asan_malloc_linux.cpp:77
        #1 0x5563a0a1e3d3 in xcalloc wrapper.c:150
        #2 0x5563a058d005 in parse_attr_line attr.c:384
        #3 0x5563a058e661 in handle_attr_line attr.c:660
        #4 0x5563a058eddb in read_attr_from_index attr.c:769
        #5 0x5563a058ef12 in read_attr attr.c:797
        #6 0x5563a058f24c in bootstrap_attr_stack attr.c:867
        #7 0x5563a058f4a3 in prepare_attr_stack attr.c:902
        #8 0x5563a05905da in collect_some_attrs attr.c:1097
        #9 0x5563a059093d in git_all_attrs attr.c:1128
        #10 0x5563a02f636e in check_attr builtin/check-attr.c:67
        #11 0x5563a02f6c12 in cmd_check_attr builtin/check-attr.c:183
        #12 0x5563a02aa993 in run_builtin git.c:466
        #13 0x5563a02ab397 in handle_builtin git.c:721
        #14 0x5563a02abb2b in run_argv git.c:788
        #15 0x5563a02ac991 in cmd_main git.c:926
        #16 0x5563a05432bd in main common-main.c:57
        #17 0x7fd3ef82228f  (/usr/lib/libc.so.6+0x2328f)

    ==1022==HINT: if you don't care about these errors you may set allocator_may_return_null=1
    SUMMARY: AddressSanitizer: allocation-size-too-big /usr/src/debug/gcc/libsanitizer/asan/asan_malloc_linux.cpp:77 in __interceptor_calloc
    ==1022==ABORTING

Or, much worse, it can lead to an out-of-bounds write because we
underallocate and then memcpy(3P) into an array:

    perl -e '
        print "A " . "\rh="x2000000000;
        print "\rh="x2000000000;
        print "\rh="x294967294 . "\n"
    ' >.gitattributes
    git add .gitattributes
    git commit -am "evil attributes"

    $ git clone --quiet /path/to/repo
    =================================================================
    ==15062==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x602000002550 at pc 0x5555559884d5 bp 0x7fffffffbc60 sp 0x7fffffffbc58
    WRITE of size 8 at 0x602000002550 thread T0
        #0 0x5555559884d4 in parse_attr_line attr.c:393
        #1 0x5555559884d4 in handle_attr_line attr.c:660
        #2 0x555555988902 in read_attr_from_index attr.c:784
        #3 0x555555988902 in read_attr_from_index attr.c:747
        #4 0x555555988a1d in read_attr attr.c:800
        #5 0x555555989b0c in bootstrap_attr_stack attr.c:882
        #6 0x555555989b0c in prepare_attr_stack attr.c:917
        #7 0x555555989b0c in collect_some_attrs attr.c:1112
        #8 0x55555598b141 in git_check_attr attr.c:1126
        #9 0x555555a13004 in convert_attrs convert.c:1311
        #10 0x555555a95e04 in checkout_entry_ca entry.c:553
        #11 0x555555d58bf6 in checkout_entry entry.h:42
        #12 0x555555d58bf6 in check_updates unpack-trees.c:480
        #13 0x555555d5eb55 in unpack_trees unpack-trees.c:2040
        #14 0x555555785ab7 in checkout builtin/clone.c:724
        #15 0x555555785ab7 in cmd_clone builtin/clone.c:1384
        #16 0x55555572443c in run_builtin git.c:466
        #17 0x55555572443c in handle_builtin git.c:721
        #18 0x555555727872 in run_argv git.c:788
        #19 0x555555727872 in cmd_main git.c:926
        #20 0x555555721fa0 in main common-main.c:57
        #21 0x7ffff73f1d09 in __libc_start_main ../csu/libc-start.c:308
        #22 0x555555723f39 in _start (git+0x1cff39)

    0x602000002552 is located 0 bytes to the right of 2-byte region [0x602000002550,0x602000002552) allocated by thread T0 here:
        #0 0x7ffff768c037 in __interceptor_calloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:154
        #1 0x555555d7fff7 in xcalloc wrapper.c:150
        #2 0x55555598815f in parse_attr_line attr.c:384
        #3 0x55555598815f in handle_attr_line attr.c:660
        #4 0x555555988902 in read_attr_from_index attr.c:784
        #5 0x555555988902 in read_attr_from_index attr.c:747
        #6 0x555555988a1d in read_attr attr.c:800
        #7 0x555555989b0c in bootstrap_attr_stack attr.c:882
        #8 0x555555989b0c in prepare_attr_stack attr.c:917
        #9 0x555555989b0c in collect_some_attrs attr.c:1112
        #10 0x55555598b141 in git_check_attr attr.c:1126
        #11 0x555555a13004 in convert_attrs convert.c:1311
        #12 0x555555a95e04 in checkout_entry_ca entry.c:553
        #13 0x555555d58bf6 in checkout_entry entry.h:42
        #14 0x555555d58bf6 in check_updates unpack-trees.c:480
        #15 0x555555d5eb55 in unpack_trees unpack-trees.c:2040
        #16 0x555555785ab7 in checkout builtin/clone.c:724
        #17 0x555555785ab7 in cmd_clone builtin/clone.c:1384
        #18 0x55555572443c in run_builtin git.c:466
        #19 0x55555572443c in handle_builtin git.c:721
        #20 0x555555727872 in run_argv git.c:788
        #21 0x555555727872 in cmd_main git.c:926
        #22 0x555555721fa0 in main common-main.c:57
        #23 0x7ffff73f1d09 in __libc_start_main ../csu/libc-start.c:308

    SUMMARY: AddressSanitizer: heap-buffer-overflow attr.c:393 in parse_attr_line
    Shadow bytes around the buggy address:
      0x0c047fff8450: fa fa 00 02 fa fa 00 07 fa fa fd fd fa fa 00 00
      0x0c047fff8460: fa fa 02 fa fa fa fd fd fa fa 00 06 fa fa 05 fa
      0x0c047fff8470: fa fa fd fd fa fa 00 02 fa fa 06 fa fa fa 05 fa
      0x0c047fff8480: fa fa 07 fa fa fa fd fd fa fa 00 01 fa fa 00 02
      0x0c047fff8490: fa fa 00 03 fa fa 00 fa fa fa 00 01 fa fa 00 03
    =>0x0c047fff84a0: fa fa 00 01 fa fa 00 02 fa fa[02]fa fa fa fa fa
      0x0c047fff84b0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
      0x0c047fff84c0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
      0x0c047fff84d0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
      0x0c047fff84e0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
      0x0c047fff84f0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
    Shadow byte legend (one shadow byte represents 8 application bytes):
      Addressable:           00
      Partially addressable: 01 02 03 04 05 06 07
      Heap left redzone:       fa
      Freed heap region:       fd
      Stack left redzone:      f1
      Stack mid redzone:       f2
      Stack right redzone:     f3
      Stack after return:      f5
      Stack use after scope:   f8
      Global redzone:          f9
      Global init order:       f6
      Poisoned by user:        f7
      Container overflow:      fc
      Array cookie:            ac
      Intra object redzone:    bb
      ASan internal:           fe
      Left alloca redzone:     ca
      Right alloca redzone:    cb
      Shadow gap:              cc
    ==15062==ABORTING

Fix this bug by using `size_t` instead to count the number of attributes
so that this value cannot reasonably overflow without running out of
memory before already.

Reported-by: Markus Vervier <markus.vervier@x41-dsec.de>
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent 2455720
History
Tip revision: 34ace8bad02bb14ecc5b631f7e3daaa7a9bba7d9 authored by Patrick Steinhardt on 01 December 2022, 14:45:27 UTC
attr: fix out-of-bounds write when parsing huge number of attributes
Tip revision: 34ace8b
File Mode Size
.github
Documentation
block-sha1
builtin
ci
compat
contrib
ewah
git-gui
gitk-git
gitweb
mergetools
negotiator
perl
po
ppc
refs
sha1collisiondetection @ 855827c
sha1dc
sha256
t
templates
trace2
vcs-svn
xdiff
.cirrus.yml -rw-r--r-- 312 bytes
.clang-format -rw-r--r-- 5.0 KB
.editorconfig -rw-r--r-- 288 bytes
.gitattributes -rw-r--r-- 544 bytes
.gitignore -rw-r--r-- 3.4 KB
.gitmodules -rw-r--r-- 153 bytes
.mailmap -rw-r--r-- 16.6 KB
.travis.yml -rw-r--r-- 1.0 KB
.tsan-suppressions -rw-r--r-- 689 bytes
CODE_OF_CONDUCT.md -rw-r--r-- 3.9 KB
COPYING -rw-r--r-- 18.3 KB
GIT-VERSION-GEN -rwxr-xr-x 752 bytes
INSTALL -rw-r--r-- 9.8 KB
LGPL-2.1 -rw-r--r-- 26.2 KB
Makefile -rw-r--r-- 101.6 KB
README.md -rw-r--r-- 3.2 KB
RelNotes l--------- 33 bytes
abspath.c -rw-r--r-- 6.4 KB
aclocal.m4 -rw-r--r-- 1.4 KB
add-interactive.c -rw-r--r-- 30.4 KB
add-interactive.h -rw-r--r-- 965 bytes
add-patch.c -rw-r--r-- 50.0 KB
advice.c -rw-r--r-- 9.7 KB
advice.h -rw-r--r-- 2.9 KB
alias.c -rw-r--r-- 2.3 KB
alias.h -rw-r--r-- 310 bytes
alloc.c -rw-r--r-- 3.2 KB
alloc.h -rw-r--r-- 527 bytes
apply.c -rw-r--r-- 131.1 KB
apply.h -rw-r--r-- 5.3 KB
archive-tar.c -rw-r--r-- 12.3 KB
archive-zip.c -rw-r--r-- 17.1 KB
archive.c -rw-r--r-- 17.8 KB
archive.h -rw-r--r-- 1.4 KB
attr.c -rw-r--r-- 28.1 KB
attr.h -rw-r--r-- 6.3 KB
banned.h -rw-r--r-- 1.1 KB
base85.c -rw-r--r-- 2.8 KB
bisect.c -rw-r--r-- 30.1 KB
bisect.h -rw-r--r-- 2.2 KB
blame.c -rw-r--r-- 83.5 KB
blame.h -rw-r--r-- 5.6 KB
blob.c -rw-r--r-- 461 bytes
blob.h -rw-r--r-- 688 bytes
bloom.c -rw-r--r-- 8.0 KB
bloom.h -rw-r--r-- 3.0 KB
branch.c -rw-r--r-- 10.1 KB
branch.h -rw-r--r-- 3.0 KB
builtin.h -rw-r--r-- 12.3 KB
bulk-checkin.c -rw-r--r-- 7.3 KB
bulk-checkin.h -rw-r--r-- 323 bytes
bundle.c -rw-r--r-- 14.4 KB
bundle.h -rw-r--r-- 894 bytes
cache-tree.c -rw-r--r-- 20.8 KB
cache-tree.h -rw-r--r-- 2.1 KB
cache.h -rw-r--r-- 65.8 KB
chdir-notify.c -rw-r--r-- 1.8 KB
chdir-notify.h -rw-r--r-- 2.5 KB
check-builtins.sh -rwxr-xr-x 596 bytes
check_bindir -rwxr-xr-x 374 bytes
checkout.c -rw-r--r-- 1.9 KB
checkout.h -rw-r--r-- 369 bytes
color.c -rw-r--r-- 9.6 KB
color.h -rw-r--r-- 4.8 KB
column.c -rw-r--r-- 9.4 KB
column.h -rw-r--r-- 1.4 KB
combine-diff.c -rw-r--r-- 43.0 KB
command-list.txt -rw-r--r-- 11.5 KB
commit-graph.c -rw-r--r-- 64.1 KB
commit-graph.h -rw-r--r-- 4.7 KB
commit-reach.c -rw-r--r-- 20.0 KB
commit-reach.h -rw-r--r-- 3.8 KB
commit-slab-decl.h -rw-r--r-- 1.4 KB
commit-slab-impl.h -rw-r--r-- 3.1 KB
commit-slab.h -rw-r--r-- 2.5 KB
commit.c -rw-r--r-- 40.8 KB
commit.h -rw-r--r-- 12.6 KB
common-main.c -rw-r--r-- 1.3 KB
config.c -rw-r--r-- 81.9 KB
config.h -rw-r--r-- 22.1 KB
config.mak.dev -rw-r--r-- 1.7 KB
config.mak.in -rw-r--r-- 540 bytes
config.mak.uname -rw-r--r-- 23.7 KB
configure.ac -rw-r--r-- 38.5 KB
connect.c -rw-r--r-- 34.9 KB
connect.h -rw-r--r-- 1.2 KB
connected.c -rw-r--r-- 4.3 KB
connected.h -rw-r--r-- 1.7 KB
convert.c -rw-r--r-- 49.2 KB
convert.h -rw-r--r-- 5.0 KB
copy.c -rw-r--r-- 1.3 KB
credential.c -rw-r--r-- 12.1 KB
credential.h -rw-r--r-- 6.4 KB
csum-file.c -rw-r--r-- 4.1 KB
csum-file.h -rw-r--r-- 1.7 KB
ctype.c -rw-r--r-- 2.6 KB
daemon.c -rw-r--r-- 34.6 KB
date.c -rw-r--r-- 31.5 KB
decorate.c -rw-r--r-- 1.7 KB
decorate.h -rw-r--r-- 1.4 KB
delta-islands.c -rw-r--r-- 11.7 KB
delta-islands.h -rw-r--r-- 572 bytes
delta.h -rw-r--r-- 3.3 KB
detect-compiler -rwxr-xr-x 1016 bytes
diff-delta.c -rw-r--r-- 15.5 KB
diff-lib.c -rw-r--r-- 17.6 KB
diff-no-index.c -rw-r--r-- 7.2 KB
diff.c -rw-r--r-- 191.9 KB
diff.h -rw-r--r-- 19.8 KB
diffcore-break.c -rw-r--r-- 9.3 KB
diffcore-delta.c -rw-r--r-- 5.5 KB
diffcore-order.c -rw-r--r-- 2.4 KB
diffcore-pickaxe.c -rw-r--r-- 6.6 KB
diffcore-rename.c -rw-r--r-- 19.3 KB
diffcore.h -rw-r--r-- 6.6 KB
dir-iterator.c -rw-r--r-- 5.8 KB
dir-iterator.h -rw-r--r-- 4.3 KB
dir.c -rw-r--r-- 96.1 KB
dir.h -rw-r--r-- 16.4 KB
editor.c -rw-r--r-- 3.0 KB
entry.c -rw-r--r-- 14.0 KB
environment.c -rw-r--r-- 11.0 KB
exec-cmd.c -rw-r--r-- 8.0 KB
exec-cmd.h -rw-r--r-- 475 bytes
fetch-negotiator.c -rw-r--r-- 609 bytes
fetch-negotiator.h -rw-r--r-- 1.6 KB
fetch-pack.c -rw-r--r-- 53.8 KB
fetch-pack.h -rw-r--r-- 2.6 KB
fmt-merge-msg.c -rw-r--r-- 17.5 KB
fmt-merge-msg.h -rw-r--r-- 420 bytes
fsck.c -rw-r--r-- 32.9 KB
fsck.h -rw-r--r-- 3.2 KB
fsmonitor.c -rw-r--r-- 10.5 KB
fsmonitor.h -rw-r--r-- 2.4 KB
fuzz-commit-graph.c -rw-r--r-- 465 bytes
fuzz-pack-headers.c -rw-r--r-- 309 bytes
fuzz-pack-idx.c -rw-r--r-- 277 bytes
generate-cmdlist.sh -rwxr-xr-x 1.5 KB
generate-configlist.sh -rwxr-xr-x 370 bytes
gettext.c -rw-r--r-- 3.4 KB
gettext.h -rw-r--r-- 2.2 KB
git-add--interactive.perl -rwxr-xr-x 46.6 KB
git-archimport.perl -rwxr-xr-x 36.1 KB
git-bisect.sh -rwxr-xr-x 5.1 KB
git-compat-util.h -rw-r--r-- 37.9 KB
git-cvsexportcommit.perl -rwxr-xr-x 12.8 KB
git-cvsimport.perl -rwxr-xr-x 31.3 KB
git-cvsserver.perl -rwxr-xr-x 159.2 KB
git-difftool--helper.sh -rwxr-xr-x 2.2 KB
git-filter-branch.sh -rwxr-xr-x 16.0 KB
git-instaweb.sh -rwxr-xr-x 21.8 KB
git-merge-octopus.sh -rwxr-xr-x 2.4 KB
git-merge-one-file.sh -rwxr-xr-x 3.6 KB
git-merge-resolve.sh -rwxr-xr-x 944 bytes
git-mergetool--lib.sh -rw-r--r-- 9.5 KB
git-mergetool.sh -rwxr-xr-x 10.1 KB
git-p4.py -rwxr-xr-x 165.1 KB
git-quiltimport.sh -rwxr-xr-x 3.6 KB
git-rebase--preserve-merges.sh -rw-r--r-- 28.6 KB
git-request-pull.sh -rwxr-xr-x 4.0 KB
git-send-email.perl -rwxr-xr-x 57.3 KB
git-sh-i18n.sh -rw-r--r-- 2.4 KB
git-sh-setup.sh -rw-r--r-- 9.1 KB
git-submodule.sh -rwxr-xr-x 20.1 KB
git-svn.perl -rwxr-xr-x 63.2 KB
git-web--browse.sh -rwxr-xr-x 4.3 KB
git.c -rw-r--r-- 26.9 KB
git.rc -rw-r--r-- 635 bytes
gpg-interface.c -rw-r--r-- 11.5 KB
gpg-interface.h -rw-r--r-- 1.6 KB
graph.c -rw-r--r-- 40.0 KB
graph.h -rw-r--r-- 8.6 KB
grep.c -rw-r--r-- 52.9 KB
grep.h -rw-r--r-- 4.9 KB
hash.h -rw-r--r-- 7.7 KB
hashmap.c -rw-r--r-- 8.4 KB
hashmap.h -rw-r--r-- 19.8 KB
help.c -rw-r--r-- 18.4 KB
help.h -rw-r--r-- 3.2 KB
hex.c -rw-r--r-- 4.2 KB
http-backend.c -rw-r--r-- 18.9 KB
http-fetch.c -rw-r--r-- 3.4 KB
http-push.c -rw-r--r-- 50.2 KB
http-walker.c -rw-r--r-- 15.1 KB
http.c -rw-r--r-- 67.1 KB
http.h -rw-r--r-- 7.9 KB
ident.c -rw-r--r-- 15.9 KB
imap-send.c -rw-r--r-- 37.0 KB
iterator.h -rw-r--r-- 2.1 KB
json-writer.c -rw-r--r-- 8.5 KB
json-writer.h -rw-r--r-- 4.2 KB
khash.h -rw-r--r-- 12.9 KB
kwset.c -rw-r--r-- 20.6 KB
kwset.h -rw-r--r-- 2.5 KB
levenshtein.c -rw-r--r-- 2.5 KB
levenshtein.h -rw-r--r-- 203 bytes
line-log.c -rw-r--r-- 33.0 KB
line-log.h -rw-r--r-- 1.7 KB
line-range.c -rw-r--r-- 6.6 KB
line-range.h -rw-r--r-- 1.4 KB
linear-assignment.c -rw-r--r-- 4.1 KB
linear-assignment.h -rw-r--r-- 736 bytes
list-objects-filter-options.c -rw-r--r-- 10.6 KB
list-objects-filter-options.h -rw-r--r-- 3.9 KB
list-objects-filter.c -rw-r--r-- 19.0 KB
list-objects-filter.h -rw-r--r-- 3.2 KB
list-objects.c -rw-r--r-- 11.3 KB
list-objects.h -rw-r--r-- 762 bytes
list.h -rw-r--r-- 5.6 KB
ll-merge.c -rw-r--r-- 10.9 KB
ll-merge.h -rw-r--r-- 3.0 KB
lockfile.c -rw-r--r-- 5.6 KB
lockfile.h -rw-r--r-- 11.3 KB
log-tree.c -rw-r--r-- 27.5 KB
log-tree.h -rw-r--r-- 1.5 KB
ls-refs.c -rw-r--r-- 2.7 KB
ls-refs.h -rw-r--r-- 209 bytes
mailinfo.c -rw-r--r-- 27.8 KB
mailinfo.h -rw-r--r-- 1.0 KB
mailmap.c -rw-r--r-- 8.9 KB
mailmap.h -rw-r--r-- 292 bytes
match-trees.c -rw-r--r-- 8.5 KB
mem-pool.c -rw-r--r-- 3.5 KB
mem-pool.h -rw-r--r-- 1.6 KB
merge-blobs.c -rw-r--r-- 2.0 KB
merge-blobs.h -rw-r--r-- 232 bytes
merge-ort-wrappers.c -rw-r--r-- 1.4 KB
merge-ort-wrappers.h -rw-r--r-- 638 bytes
merge-ort.c -rw-r--r-- 1.3 KB
merge-ort.h -rw-r--r-- 1.6 KB
merge-recursive.c -rw-r--r-- 116.3 KB
merge-recursive.h -rw-r--r-- 3.6 KB
merge.c -rw-r--r-- 2.8 KB
mergesort.c -rw-r--r-- 1.5 KB
mergesort.h -rw-r--r-- 574 bytes
midx.c -rw-r--r-- 37.5 KB
midx.h -rw-r--r-- 1.8 KB
name-hash.c -rw-r--r-- 18.8 KB
notes-cache.c -rw-r--r-- 2.3 KB
notes-cache.h -rw-r--r-- 541 bytes
notes-merge.c -rw-r--r-- 22.6 KB
notes-merge.h -rw-r--r-- 2.9 KB
notes-utils.c -rw-r--r-- 5.0 KB
notes-utils.h -rw-r--r-- 1.5 KB
notes.c -rw-r--r-- 37.3 KB
notes.h -rw-r--r-- 12.6 KB
object-store.h -rw-r--r-- 14.9 KB
object.c -rw-r--r-- 13.6 KB
object.h -rw-r--r-- 6.4 KB
oid-array.c -rw-r--r-- 1.8 KB
oid-array.h -rw-r--r-- 4.3 KB
oidmap.c -rw-r--r-- 1.5 KB
oidmap.h -rw-r--r-- 2.3 KB
oidset.c -rw-r--r-- 1.8 KB
oidset.h -rw-r--r-- 3.0 KB
pack-bitmap-write.c -rw-r--r-- 12.7 KB
pack-bitmap.c -rw-r--r-- 35.5 KB
pack-bitmap.h -rw-r--r-- 2.6 KB
pack-check.c -rw-r--r-- 5.5 KB
pack-objects.c -rw-r--r-- 5.0 KB
pack-objects.h -rw-r--r-- 12.2 KB
pack-revindex.c -rw-r--r-- 5.8 KB
pack-revindex.h -rw-r--r-- 322 bytes
pack-write.c -rw-r--r-- 10.4 KB
pack.h -rw-r--r-- 3.3 KB
packfile.c -rw-r--r-- 55.1 KB
packfile.h -rw-r--r-- 6.8 KB
pager.c -rw-r--r-- 5.1 KB
parse-options-cb.c -rw-r--r-- 6.4 KB
parse-options.c -rw-r--r-- 25.6 KB
parse-options.h -rw-r--r-- 13.0 KB
patch-delta.c -rw-r--r-- 2.4 KB
patch-ids.c -rw-r--r-- 3.7 KB
patch-ids.h -rw-r--r-- 1.2 KB
path.c -rw-r--r-- 38.2 KB
path.h -rw-r--r-- 5.8 KB
pathspec.c -rw-r--r-- 18.2 KB
pathspec.h -rw-r--r-- 5.0 KB
pkt-line.c -rw-r--r-- 13.5 KB
pkt-line.h -rw-r--r-- 8.3 KB
preload-index.c -rw-r--r-- 3.8 KB
pretty.c -rw-r--r-- 49.1 KB
pretty.h -rw-r--r-- 3.9 KB
prio-queue.c -rw-r--r-- 2.0 KB
prio-queue.h -rw-r--r-- 1.6 KB
progress.c -rw-r--r-- 9.2 KB
progress.h -rw-r--r-- 768 bytes
promisor-remote.c -rw-r--r-- 5.5 KB
promisor-remote.h -rw-r--r-- 1.1 KB
prompt.c -rw-r--r-- 1.6 KB
prompt.h -rw-r--r-- 223 bytes
protocol.c -rw-r--r-- 2.4 KB
protocol.h -rw-r--r-- 1.1 KB
prune-packed.c -rw-r--r-- 959 bytes
prune-packed.h -rw-r--r-- 152 bytes
quote.c -rw-r--r-- 12.1 KB
quote.h -rw-r--r-- 3.2 KB
range-diff.c -rw-r--r-- 14.6 KB
range-diff.h -rw-r--r-- 478 bytes
reachable.c -rw-r--r-- 5.9 KB
reachable.h -rw-r--r-- 304 bytes
read-cache.c -rw-r--r-- 98.1 KB
rebase-interactive.c -rw-r--r-- 7.8 KB
rebase-interactive.h -rw-r--r-- 651 bytes
rebase.c -rw-r--r-- 1.0 KB
rebase.h -rw-r--r-- 244 bytes
ref-filter.c -rw-r--r-- 70.9 KB
ref-filter.h -rw-r--r-- 4.8 KB
reflog-walk.c -rw-r--r-- 8.2 KB
reflog-walk.h -rw-r--r-- 885 bytes
refs.c -rw-r--r-- 58.3 KB
refs.h -rw-r--r-- 32.0 KB
refspec.c -rw-r--r-- 6.4 KB
refspec.h -rw-r--r-- 2.4 KB
remote-curl.c -rw-r--r-- 40.0 KB
remote.c -rw-r--r-- 65.7 KB
remote.h -rw-r--r-- 10.7 KB
replace-object.c -rw-r--r-- 2.2 KB
replace-object.h -rw-r--r-- 1.4 KB
repo-settings.c -rw-r--r-- 2.9 KB
repository.c -rw-r--r-- 6.5 KB
repository.h -rw-r--r-- 5.6 KB
rerere.c -rw-r--r-- 32.2 KB
rerere.h -rw-r--r-- 1.4 KB
reset.c -rw-r--r-- 4.0 KB
reset.h -rw-r--r-- 565 bytes
resolve-undo.c -rw-r--r-- 4.4 KB
resolve-undo.h -rw-r--r-- 581 bytes
revision.c -rw-r--r-- 114.7 KB
revision.h -rw-r--r-- 12.5 KB
run-command.c -rw-r--r-- 41.1 KB
run-command.h -rw-r--r-- 16.5 KB
send-pack.c -rw-r--r-- 17.9 KB
send-pack.h -rw-r--r-- 893 bytes
sequencer.c -rw-r--r-- 154.5 KB
sequencer.h -rw-r--r-- 7.4 KB
serve.c -rw-r--r-- 7.5 KB
serve.h -rw-r--r-- 328 bytes
server-info.c -rw-r--r-- 7.5 KB
setup.c -rw-r--r-- 41.6 KB
sh-i18n--envsubst.c -rw-r--r-- 10.2 KB
sha1-file.c -rw-r--r-- 62.5 KB
sha1-lookup.c -rw-r--r-- 3.2 KB
sha1-lookup.h -rw-r--r-- 1.3 KB
sha1-name.c -rw-r--r-- 48.2 KB
sha1dc_git.c -rw-r--r-- 889 bytes
sha1dc_git.h -rw-r--r-- 618 bytes
shallow.c -rw-r--r-- 21.8 KB
shallow.h -rw-r--r-- 2.6 KB
shell.c -rw-r--r-- 5.3 KB
shortlog.h -rw-r--r-- 654 bytes
sideband.c -rw-r--r-- 5.8 KB
sideband.h -rw-r--r-- 1.0 KB
sigchain.c -rw-r--r-- 1.1 KB
sigchain.h -rw-r--r-- 1.7 KB
split-index.c -rw-r--r-- 13.6 KB
split-index.h -rw-r--r-- 1.2 KB
stable-qsort.c -rw-r--r-- 1.2 KB
strbuf.c -rw-r--r-- 25.2 KB
strbuf.h -rw-r--r-- 23.9 KB
streaming.c -rw-r--r-- 12.4 KB
streaming.h -rw-r--r-- 513 bytes
string-list.c -rw-r--r-- 7.6 KB
string-list.h -rw-r--r-- 9.9 KB
strmap.c -rw-r--r-- 4.3 KB
strmap.h -rw-r--r-- 6.8 KB
strvec.c -rw-r--r-- 2.0 KB
strvec.h -rw-r--r-- 2.8 KB
sub-process.c -rw-r--r-- 5.5 KB
sub-process.h -rw-r--r-- 3.1 KB
submodule-config.c -rw-r--r-- 21.2 KB
submodule-config.h -rw-r--r-- 3.6 KB
submodule.c -rw-r--r-- 59.7 KB
submodule.h -rw-r--r-- 5.5 KB
symlinks.c -rw-r--r-- 9.9 KB
tag.c -rw-r--r-- 5.5 KB
tag.h -rw-r--r-- 727 bytes
tar.h -rw-r--r-- 693 bytes
tempfile.c -rw-r--r-- 8.3 KB
tempfile.h -rw-r--r-- 9.4 KB
thread-utils.c -rw-r--r-- 2.6 KB
thread-utils.h -rw-r--r-- 1.4 KB
tmp-objdir.c -rw-r--r-- 6.4 KB
tmp-objdir.h -rw-r--r-- 1.5 KB
trace.c -rw-r--r-- 11.9 KB
trace.h -rw-r--r-- 8.3 KB
trace2.c -rw-r--r-- 18.0 KB
trace2.h -rw-r--r-- 18.2 KB
trailer.c -rw-r--r-- 30.3 KB
trailer.h -rw-r--r-- 3.7 KB
transport-helper.c -rw-r--r-- 41.4 KB
transport-internal.h -rw-r--r-- 2.6 KB
transport.c -rw-r--r-- 39.2 KB
transport.h -rw-r--r-- 8.5 KB
tree-diff.c -rw-r--r-- 18.0 KB
tree-walk.c -rw-r--r-- 31.4 KB
tree-walk.h -rw-r--r-- 6.7 KB
tree.c -rw-r--r-- 6.3 KB
tree.h -rw-r--r-- 1.2 KB
unicode-width.h -rw-r--r-- 9.3 KB
unimplemented.sh -rw-r--r-- 101 bytes
unix-socket.c -rw-r--r-- 2.4 KB
unix-socket.h -rw-r--r-- 158 bytes
unpack-trees.c -rw-r--r-- 68.2 KB
unpack-trees.h -rw-r--r-- 3.0 KB
upload-pack.c -rw-r--r-- 45.3 KB
upload-pack.h -rw-r--r-- 491 bytes
url.c -rw-r--r-- 2.5 KB
url.h -rw-r--r-- 697 bytes
urlmatch.c -rw-r--r-- 18.4 KB
urlmatch.h -rw-r--r-- 2.6 KB
usage.c -rw-r--r-- 6.6 KB
userdiff.c -rw-r--r-- 12.2 KB
userdiff.h -rw-r--r-- 892 bytes
utf8.c -rw-r--r-- 19.9 KB
utf8.h -rw-r--r-- 3.6 KB
varint.c -rw-r--r-- 660 bytes
varint.h -rw-r--r-- 154 bytes
version.c -rw-r--r-- 718 bytes
version.h -rw-r--r-- 230 bytes
versioncmp.c -rw-r--r-- 5.2 KB
walker.c -rw-r--r-- 7.6 KB
walker.h -rw-r--r-- 1.1 KB
wildmatch.c -rw-r--r-- 7.8 KB
wildmatch.h -rw-r--r-- 264 bytes
worktree.c -rw-r--r-- 16.3 KB
worktree.h -rw-r--r-- 5.1 KB
wrap-for-bin.sh -rw-r--r-- 946 bytes
wrapper.c -rw-r--r-- 14.3 KB
write-or-die.c -rw-r--r-- 1.5 KB
ws.c -rw-r--r-- 9.4 KB
wt-status.c -rw-r--r-- 69.6 KB
wt-status.h -rw-r--r-- 4.7 KB
xdiff-interface.c -rw-r--r-- 7.5 KB
xdiff-interface.h -rw-r--r-- 2.0 KB
zlib.c -rw-r--r-- 6.1 KB

README.md

back to top