git-commit-vandalism/builtin
SZEDER Gábor 2e09c01232 name-rev: avoid cutoff timestamp underflow
When 'git name-rev' is invoked with commit-ish parameters, it tries to
save some work, and doesn't visit commits older than the committer
date of the oldest given commit minus a one day worth of slop.  Since
our 'timestamp_t' is an unsigned type, this leads to a timestamp
underflow when the committer date of the oldest given commit is within
a day of the UNIX epoch.  As a result the cutoff timestamp ends up
far-far in the future, and 'git name-rev' doesn't visit any commits,
and names each given commit as 'undefined'.

Check whether subtracting the slop from the oldest committer date
would lead to an underflow, and use no cutoff in that case.  We don't
have a TIME_MIN constant, dddbad728c (timestamp_t: a new data type for
timestamps, 2017-04-26) didn't add one, so do it now.

Note that the type of the cutoff timestamp variable used to be signed
before 5589e87fd8 (name-rev: change a "long" variable to timestamp_t,
2017-05-20).  The behavior was still the same even back then, but the
underflow didn't happen when substracting the slop from the oldest
committer date, but when comparing the signed cutoff timestamp with
unsigned committer dates in name_rev().  IOW, this underflow bug is as
old as 'git name-rev' itself.

Helped-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-09-28 13:36:04 +09:00
..
add.c
am.c Merge branch 'nd/switch-and-restore' 2019-07-09 15:25:44 -07:00
annotate.c
apply.c
archive.c
bisect--helper.c bisect--helper: verify HEAD could be parsed before continuing 2019-05-28 10:51:01 -07:00
blame.c Merge branch 'br/blame-ignore' 2019-07-19 11:30:20 -07:00
branch.c Merge branch 'po/doc-branch' 2019-07-09 15:25:34 -07:00
bundle.c create_bundle(): drop unused "header" parameter 2019-01-24 12:35:44 -08:00
cat-file.c sha1-file.c: remove the_repo from read_object_with_reference() 2019-06-27 12:45:17 -07:00
check-attr.c
check-ignore.c
check-mailmap.c
check-ref-format.c
checkout-index.c
checkout.c l10n: reformat some localized strings for v2.23.0 2019-08-06 12:43:43 -07:00
clean.c clean: show an error message when the path is too long 2019-07-19 08:12:44 -07:00
clone.c Merge branch 'mt/dir-iterator-updates' 2019-07-25 13:59:22 -07:00
column.c builtin: consistently pass cmd_* prefix to parse_options 2019-05-13 14:22:53 +09:00
commit-graph.c commit-graph: verify chains with --shallow mode 2019-06-19 20:46:26 -07:00
commit-tree.c
commit.c Merge branch 'ra/cherry-pick-revert-skip' 2019-07-19 11:30:21 -07:00
config.c
count-objects.c rename "alternate_object_database" to "object_directory" 2018-11-13 14:22:02 +09:00
credential.c
describe.c hashmap: convert sha1hash() to oidhash() 2019-06-20 10:44:22 -07:00
diff-files.c
diff-index.c
diff-tree.c
diff.c
difftool.c Merge branch 'js/difftool-no-index' 2019-05-19 16:45:35 +09:00
env--helper.c env--helper: mark a file-local symbol as static 2019-07-11 14:31:04 -07:00
fast-export.c object: convert lookup_object() to use object_id 2019-06-20 10:18:09 -07:00
fetch-pack.c
fetch.c l10n: reformat some localized strings for v2.23.0 2019-08-06 12:43:43 -07:00
fmt-merge-msg.c
for-each-ref.c parse_opt_ref_sorting: always use with NONEG flag 2019-03-21 12:03:35 +09:00
fsck.c object: convert lookup_object() to use object_id 2019-06-20 10:18:09 -07:00
gc.c Merge branch 'ds/commit-graph-incremental' 2019-07-19 11:30:20 -07:00
get-tar-commit-id.c
grep.c sha1-file.c: remove the_repo from read_object_with_reference() 2019-06-27 12:45:17 -07:00
hash-object.c builtin: consistently pass cmd_* prefix to parse_options 2019-05-13 14:22:53 +09:00
help.c
index-pack.c index-pack: prefetch missing REF_DELTA bases 2019-05-15 11:01:40 +09:00
init-db.c Merge branch 'nd/init-relative-template-fix' 2019-06-13 13:18:46 -07:00
interpret-trailers.c interpret-trailers: load default config 2019-06-19 07:12:49 -07:00
log.c log: really flip the --mailmap default 2019-08-02 09:55:03 -07:00
ls-files.c cleanup: fix possible overflow errors in binary search, part 2 2019-06-13 11:28:53 -07:00
ls-remote.c
ls-tree.c
mailinfo.c
mailsplit.c
merge-base.c
merge-file.c
merge-index.c
merge-ours.c
merge-recursive.c
merge-tree.c tree-walk.c: remove the_repo from fill_tree_descriptor() 2019-06-27 12:45:17 -07:00
merge.c Merge branch 'ea/merge-code-cleanup' 2019-07-19 11:30:23 -07:00
mktag.c object-store: move object access functions to object-store.h 2018-05-16 11:42:03 +09:00
mktree.c mktree: drop unused length parameter 2019-05-13 14:22:54 +09:00
multi-pack-index.c multi-pack-index: prepare 'repack' subcommand 2019-06-11 10:34:40 -07:00
mv.c
name-rev.c name-rev: avoid cutoff timestamp underflow 2019-09-28 13:36:04 +09:00
notes.c
pack-objects.c repack: silence warnings when auto-enabled bitmaps cannot be built 2019-07-31 13:15:51 -07:00
pack-redundant.c
pack-refs.c Honor core.precomposeUnicode in more places 2019-04-26 10:54:03 +09:00
patch-id.c format-patch: make --base patch-id output stable 2019-05-08 19:27:43 +09:00
prune-packed.c
prune.c object: convert lookup_object() to use object_id 2019-06-20 10:18:09 -07:00
pull.c pull: add --[no-]show-forced-updates passthrough 2019-06-21 09:38:29 -07:00
push.c
range-diff.c builtin: consistently pass cmd_* prefix to parse_options 2019-05-13 14:22:53 +09:00
read-tree.c cmd_{read,write}_tree: rename "unused" variable that is used 2019-05-13 14:22:53 +09:00
rebase.c Merge branch 'js/rebase-cleanup' 2019-07-29 12:39:14 -07:00
receive-pack.c Merge branch 'jk/check-connected-with-alternates' 2019-07-19 11:30:21 -07:00
reflog.c
remote-ext.c consistently use "fallthrough" comments in switches 2017-09-22 12:49:57 +09:00
remote-fd.c
remote.c remove_all_fetch_refspecs(): drop unused "remote" parameter 2019-05-13 14:22:54 +09:00
repack.c repack: simplify handling of auto-bitmaps and .keep files 2019-07-31 13:26:25 -07:00
replace.c Merge branch 'cc/replace-graft-peel-tags' 2019-05-09 00:37:24 +09:00
rerere.c
reset.c Merge branch 'nd/tree-walk-with-repo' 2019-07-19 11:30:21 -07:00
rev-list.c rev-list: teach --no-object-names to enable piping 2019-06-20 13:13:04 -07:00
rev-parse.c
revert.c Merge branch 'ra/cherry-pick-revert-skip' 2019-07-19 11:30:21 -07:00
rm.c Merge branch 'jc/denoise-rm-to-resolve' 2019-07-25 13:59:24 -07:00
send-pack.c
shortlog.c
show-branch.c show-branch: drop unused parameter from show_independent() 2019-05-13 14:22:54 +09:00
show-index.c
show-ref.c Merge branch 'en/unicode-in-refnames' 2019-05-19 16:45:30 +09:00
stash.c Merge branch 'tg/stash-keep-index-with-removed-paths' 2019-07-25 13:59:23 -07:00
stripspace.c
submodule--helper.c Merge branch 'ms/submodule-foreach-fix' 2019-07-09 15:25:46 -07:00
symbolic-ref.c
tag.c tag: add tag.gpgSign config option to force all tags be GPG-signed 2019-06-05 14:39:28 -07:00
unpack-file.c object-store: move object access functions to object-store.h 2018-05-16 11:42:03 +09:00
unpack-objects.c object: convert lookup_object() to use object_id 2019-06-20 10:18:09 -07:00
update-index.c tree-walk.c: remove the_repo from get_tree_entry() 2019-06-27 12:45:17 -07:00
update-ref.c
update-server-info.c
upload-archive.c
upload-pack.c builtin: consistently pass cmd_* prefix to parse_options 2019-05-13 14:22:53 +09:00
var.c
verify-commit.c Merge branch 'jk/no-system-includes-in-dot-c' 2019-07-31 14:38:56 -07:00
verify-pack.c
verify-tag.c verify-tag: drop signal.h include 2019-06-19 08:19:21 -07:00
worktree.c Merge branch 'nd/worktree-name-sanitization' 2019-06-13 13:19:40 -07:00
write-tree.c cmd_{read,write}_tree: rename "unused" variable that is used 2019-05-13 14:22:53 +09:00