git-commit-vandalism/builtin
René Scharfe 568a05c5ec cleanup: fix possible overflow errors in binary search, part 2
Calculating the sum of two array indexes to find the midpoint between
them can overflow, i.e. code like this is unsafe for big arrays:

	mid = (first + last) >> 1;

Make sure the intermediate value stays within the boundaries instead,
like this:

	mid = first + ((last - first) >> 1);

The loop condition of the binary search makes sure that 'last' is
always greater than 'first', so this is safe as long as 'first' is
not negative.  And that can be verified easily using the pre-context
of each change, except for name-hash.c, so add an assertion to that
effect there.

The unsafe calculations were found with:

	git grep '(.*+.*) *>> *1'

This is a continuation of 19716b21a4 (cleanup: fix possible overflow
errors in binary search, 2017-10-08).

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-06-13 11:28:53 -07:00
..
add.c add: error appropriately on repository with no commits 2019-04-10 12:52:50 +09:00
am.c Merge branch 'bc/hash-transition-16' 2019-04-25 16:41:17 +09:00
annotate.c
apply.c
archive.c pack-protocol.txt: accept error packets in any context 2019-01-02 13:05:30 -08:00
bisect--helper.c Fix typos in translatable strings for v2.21.0 2019-02-11 12:58:06 -08:00
blame.c Merge branch 'sg/blame-in-bare-start-at-head' 2019-04-25 16:41:21 +09:00
branch.c parse_opt_ref_sorting: always use with NONEG flag 2019-03-21 12:03:35 +09:00
bundle.c create_bundle(): drop unused "header" parameter 2019-01-24 12:35:44 -08:00
cat-file.c Merge branch 'jk/loose-object-cache-oid' 2019-02-06 22:05:27 -08:00
check-attr.c cache.h: flip NO_THE_INDEX_COMPATIBILITY_MACROS switch 2019-01-24 11:55:06 -08:00
check-ignore.c cache.h: flip NO_THE_INDEX_COMPATIBILITY_MACROS switch 2019-01-24 11:55:06 -08:00
check-mailmap.c
check-ref-format.c
checkout-index.c Merge branch 'nd/the-index-final' 2019-02-06 22:05:23 -08:00
checkout.c Merge branch 'nd/checkout-m' 2019-04-25 16:41:14 +09:00
clean.c cache.h: flip NO_THE_INDEX_COMPATIBILITY_MACROS switch 2019-01-24 11:55:06 -08:00
clone.c Merge branch 'nd/parse-options-aliases' 2019-05-19 16:45:28 +09:00
column.c
commit-graph.c commit-graph verify: detect inability to read the graph 2019-04-01 12:14:50 +09:00
commit-tree.c commit-tree: utilize parse-options api 2019-03-08 10:31:24 +09:00
commit.c Merge branch 'pw/clean-sequencer-state-upon-final-commit' 2019-05-13 23:50:35 +09:00
config.c Merge branch 'jk/save-getenv-result' 2019-01-29 12:47:54 -08:00
count-objects.c rename "alternate_object_database" to "object_directory" 2018-11-13 14:22:02 +09:00
credential.c
describe.c Merge branch 'ss/describe-dirty-in-the-right-directory' 2019-02-06 22:05:29 -08:00
diff-files.c cache.h: flip NO_THE_INDEX_COMPATIBILITY_MACROS switch 2019-01-24 11:55:06 -08:00
diff-index.c cache.h: flip NO_THE_INDEX_COMPATIBILITY_MACROS switch 2019-01-24 11:55:06 -08:00
diff-tree.c Merge branch 'en/combined-all-paths' 2019-03-07 09:59:54 +09:00
diff.c Merge branch 'nd/diff-parseopt-4' 2019-04-25 16:41:12 +09:00
difftool.c Merge branch 'js/difftool-no-index' 2019-05-19 16:45:35 +09:00
fast-export.c Merge branch 'en/fast-export-import' 2019-01-04 13:33:33 -08:00
fetch-pack.c fetch_pack(): drop unused parameters 2019-03-20 18:34:09 +09:00
fetch.c Merge branch 'jk/no-sigpipe-during-network-transport' 2019-03-20 15:16:06 +09: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 Merge branch 'jk/fsck-doc' 2019-03-20 15:16:06 +09:00
gc.c gc: handle & check gc.reflogExpire config 2019-04-01 12:51:51 +09:00
get-tar-commit-id.c builtin/get-tar-commit-id: make hash size independent 2019-04-01 11:57:39 +09:00
grep.c Merge branch 'nd/the-index-final' 2019-02-06 22:05:23 -08:00
hash-object.c cache.h: flip NO_THE_INDEX_COMPATIBILITY_MACROS switch 2019-01-24 11:55:06 -08:00
help.c completion: add more parameter value completion 2019-02-20 12:31:56 -08:00
index-pack.c index-pack: show progress while checking objects 2019-04-01 18:08:05 +09:00
init-db.c Merge branch 'js/init-db-update-for-mingw' 2019-04-16 19:28:05 +09:00
interpret-trailers.c
log.c Merge branch 'jk/unused-params-even-more' 2019-04-25 16:41:12 +09: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 parse_opt_ref_sorting: always use with NONEG flag 2019-03-21 12:03:35 +09:00
ls-tree.c Merge branch 'nd/attr-pathspec-in-tree-walk' 2019-01-14 15:29:28 -08:00
mailinfo.c
mailsplit.c
merge-base.c
merge-file.c
merge-index.c cache.h: flip NO_THE_INDEX_COMPATIBILITY_MACROS switch 2019-01-24 11:55:06 -08:00
merge-ours.c cache.h: flip NO_THE_INDEX_COMPATIBILITY_MACROS switch 2019-01-24 11:55:06 -08:00
merge-recursive.c Merge branch 'nd/the-index-final' 2019-02-06 22:05:23 -08:00
merge-tree.c Merge branch 'nd/the-index-final' 2019-02-06 22:05:23 -08:00
merge.c cherry-pick/revert: add scissors line on merge conflict 2019-04-19 12:05:36 +09:00
mktag.c
mktree.c
multi-pack-index.c midx: pass a repository pointer 2019-05-07 13:48:41 +09:00
mv.c cache.h: flip NO_THE_INDEX_COMPATIBILITY_MACROS switch 2019-01-24 11:55:06 -08:00
name-rev.c builtin/name-rev: make hash-size independent 2019-04-01 11:57:38 +09:00
notes.c Merge branch 'nd/the-index' into md/list-objects-filter-by-depth 2019-01-15 15:38:29 -08:00
pack-objects.c Merge branch 'ds/midx-too-many-packs' 2019-05-19 16:45:30 +09:00
pack-redundant.c object-store: rename and expand packed_git's sha1 member 2019-04-01 11:57:38 +09:00
pack-refs.c Honor core.precomposeUnicode in more places 2019-04-26 10:54:03 +09:00
patch-id.c
prune-packed.c Merge branch 'rj/prune-packed-excess-args' 2019-03-07 09:59:55 +09:00
prune.c prune: check SEEN flag for reachability 2019-02-14 15:25:33 -08:00
pull.c Merge branch 'dl/merge-cleanup-scissors-fix' 2019-05-09 00:37:24 +09:00
push.c Merge branch 'nd/style-opening-brace' 2019-01-18 13:49:52 -08:00
range-diff.c range-diff: use parse_options() instead of diff_opt_parse() 2019-03-24 22:21:24 +09:00
read-tree.c read-tree: add --quiet 2019-03-24 21:35:34 +09:00
rebase.c Merge branch 'js/rebase-config-bitfix' 2019-05-30 10:50:47 -07:00
receive-pack.c Merge branch 'ab/receive-pack-use-after-free-fix' 2019-03-07 09:59:57 +09:00
reflog.c Merge branch 'jk/loose-object-cache-oid' 2019-02-06 22:05:27 -08:00
remote-ext.c
remote-fd.c
remote.c
repack.c repack: enable bitmaps by default on bare repos 2019-03-18 14:09:54 +09:00
replace.c Merge branch 'cc/replace-graft-peel-tags' 2019-05-09 00:37:24 +09:00
rerere.c Merge branch 'nd/the-index' into md/list-objects-filter-by-depth 2019-01-15 15:38:29 -08:00
reset.c Merge branch 'bp/post-index-change-hook' 2019-04-25 16:41:11 +09:00
rev-list.c Merge branch 'tb/unexpected' 2019-05-09 00:37:25 +09:00
rev-parse.c cache.h: flip NO_THE_INDEX_COMPATIBILITY_MACROS switch 2019-01-24 11:55:06 -08:00
revert.c cherry-pick/revert: add scissors line on merge conflict 2019-04-19 12:05:36 +09:00
rm.c Use 'unsigned short' for mode, like diff_filespec does 2019-04-08 16:02:07 +09:00
send-pack.c pack-protocol.txt: accept error packets in any context 2019-01-02 13:05:30 -08:00
shortlog.c Merge branch 'nd/show-gitcomp-compilation-fix' into maint 2018-12-15 12:24:33 +09:00
show-branch.c refs.c: remove the_repo from read_ref_at() 2019-04-08 17:26:33 +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 'jk/unused-params-even-more' 2019-04-25 16:41:12 +09:00
stripspace.c stripspace: allow -s/-c outside git repository 2018-12-26 15:41:47 -08:00
submodule--helper.c Merge branch 'nd/submodule-helper-incomplete-line-fix' 2019-05-19 16:45:27 +09:00
symbolic-ref.c
tag.c Merge branch 'dl/warn-tagging-a-tag' 2019-05-19 16:45:26 +09:00
unpack-file.c
unpack-objects.c
update-index.c Merge branch 'en/merge-directory-renames' 2019-05-09 00:37:22 +09:00
update-ref.c
update-server-info.c
upload-archive.c
upload-pack.c
var.c
verify-commit.c
verify-pack.c
verify-tag.c
worktree.c Merge branch 'ms/worktree-add-atomic-mkdir' 2019-04-10 02:14:24 +09:00
write-tree.c cache.h: flip NO_THE_INDEX_COMPATIBILITY_MACROS switch 2019-01-24 11:55:06 -08:00