https://github.com/git/git
Revision 71ad7fe1bcec2a115bd0ab187240348358aa7f21 authored by Jeff King on 28 September 2022, 22:52:48 UTC, committed by Taylor Blau on 01 October 2022, 04:23:38 UTC
When git-shell is run in interactive mode (which must be enabled by creating $HOME/git-shell-commands), it reads commands from stdin, one per line, and executes them. We read the commands with git_read_line_interactively(), which uses a strbuf under the hood. That means we'll accept an input of arbitrary size (limited only by how much heap we can allocate). That creates two problems: - the rest of the code is not prepared to handle large inputs. The most serious issue here is that split_cmdline() uses "int" for most of its types, which can lead to integer overflow and out-of-bounds array reads and writes. But even with that fixed, we assume that we can feed the command name to snprintf() (via xstrfmt()), which is stuck for historical reasons using "int", and causes it to fail (and even trigger a BUG() call). - since the point of git-shell is to take input from untrusted or semi-trusted clients, it's a mild denial-of-service. We'll allocate as many bytes as the client sends us (actually twice as many, since we immediately duplicate the buffer). We can fix both by just limiting the amount of per-command input we're willing to receive. We should also fix split_cmdline(), of course, which is an accident waiting to happen, but that can come on top. Most calls to split_cmdline(), including the other one in git-shell, are OK because they are reading from an OS-provided argv, which is limited in practice. This patch should eliminate the immediate vulnerabilities. I picked 4MB as an arbitrary limit. It's big enough that nobody should ever run into it in practice (since the point is to run the commands via exec, we're subject to OS limits which are typically much lower). But it's small enough that allocating it isn't that big a deal. The code is mostly just swapping out fgets() for the strbuf call, but we have to add a few niceties like flushing and trimming line endings. We could simplify things further by putting the buffer on the stack, but 4MB is probably a bit much there. Note that we'll _always_ allocate 4MB, which for normal, non-malicious requests is more than we would before this patch. But on the other hand, other git programs are happy to use 96MB for a delta cache. And since we'd never touch most of those pages, on a lazy-allocating OS like Linux they won't even get allocated to actual RAM. The ideal would be a version of strbuf_getline() that accepted a maximum value. But for a minimal vulnerability fix, let's keep things localized and simple. We can always refactor further on top. The included test fails in an obvious way with ASan or UBSan (which notice the integer overflow and out-of-bounds reads). Without them, it fails in a less obvious way: we may segfault, or we may try to xstrfmt() a long string, leading to a BUG(). Either way, it fails reliably before this patch, and passes with it. Note that we don't need an EXPENSIVE prereq on it. It does take 10-15s to fail before this patch, but with the new limit, we fail almost immediately (and the perl process generating 2GB of data exits via SIGPIPE). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Taylor Blau <me@ttaylorr.com>
1 parent 32696a4
Tip revision: 71ad7fe1bcec2a115bd0ab187240348358aa7f21 authored by Jeff King on 28 September 2022, 22:52:48 UTC
shell: limit size of interactive commands
shell: limit size of interactive commands
Tip revision: 71ad7fe
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.1 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 |
Computing file changes ...