{"push_id":996207903,"size":33,"distinct_size":3,"ref":"refs/heads/next","head":"f92f5fe29a68d654894c6a10c5f5b3f0ce4bb1a5","before":"947c399e45ebc1a76d1e80d7152aa630726ed7e6","commits":[{"sha":"a1283866bab1cd12da57b3e427664180f5dee333","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"t5313: test bounds-checks of corrupted/malicious pack/idx files\n\nOur on-disk .pack and .idx files may reference other data by\noffset. We should make sure that we are not fooled by\ncorrupt data into accessing memory outside of our mmap'd\nboundaries.\n\nThis patch adds a series of tests for offsets found in .pack\nand .idx files. For the most part we get this right, but\nthere are two tests of .idx files marked as failures: we do\nnot bounds-check offsets in the v2 index's extended offset\ntable, nor do we handle .idx offsets that overflow a signed\noff_t.\n\nWith these tests, we should have good coverage of all\noffsets found in these files. Note that this doesn't cover\n.bitmap files, which may have similar bugs.\n\nSigned-off-by: Jeff King <peff@peff.net>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/a1283866bab1cd12da57b3e427664180f5dee333"},{"sha":"47fe3f6ef0f5a336db90d816c5fb4330ffa23668","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"nth_packed_object_offset: bounds-check extended offset\n\nIf a pack .idx file has a corrupted offset for an object, we\nmay try to access an offset in the .idx or .pack file that\nis larger than the file's size.  For the .pack case, we have\nuse_pack() to protect us, which realizes the access is out\nof bounds. But if the corrupted value asks us to look in the\n.idx file's secondary 64-bit offset table, we blindly add it\nto the mmap'd index data and access arbitrary memory.\n\nWe can fix this with a simple bounds-check compared to the\nsize we found when we opened the .idx file.\n\nNote that there's similar code in index-pack that is\ntriggered only during \"index-pack --verify\". To support\nboth, we pull the bounds-check into a separate function,\nwhich dies when it sees a corrupted file.\n\nIt would be nice if we could return an error, so that the\npack code could try to find a good copy of the object\nelsewhere. Currently nth_packed_object_offset doesn't have\nany way to return an error, but it could probably use \"0\" as\na sentinel value (since no object can start there). This is\nthe minimal fix, and we can improve the resilience later on\ntop.\n\nSigned-off-by: Jeff King <peff@peff.net>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/47fe3f6ef0f5a336db90d816c5fb4330ffa23668"},{"sha":"13e0b0d3dc76353632dcb0bc63cdf03426154317","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"use_pack: handle signed off_t overflow\n\nA v2 pack index file can specify an offset within a packfile\nof up to 2^64-1 bytes. On a system with a signed 64-bit\noff_t, we can represent only up to 2^63-1. This means that a\ncorrupted .idx file can end up with a negative offset in the\npack code. Our bounds-checking use_pack function looks for\ntoo-large offsets, but not for ones that have wrapped around\nto negative. Let's do so, which fixes an out-of-bounds\naccess demonstrated in t5313.\n\nSigned-off-by: Jeff King <peff@peff.net>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/13e0b0d3dc76353632dcb0bc63cdf03426154317"},{"sha":"65a3629ea3fa91fbf4c434bf25d84ce163aa2360","author":{"email":"17b9e1c64588c7fa6419b4d29dc1f4426279ba01@procter.org.uk","name":"Michael Procter"},"message":"upload-pack: use argv_array for pack_objects\n\nUse the argv_array in the child_process structure, to avoid having to\nmanually maintain an array size.\n\nSigned-off-by: Michael Procter <michael@procter.org.uk>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/65a3629ea3fa91fbf4c434bf25d84ce163aa2360"},{"sha":"ae2f25542ffdd1919b33c8f274f8172e49d64dbf","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'tg/git-remote'\n\nThe internal API to interact with \"remote.*\" configuration\nvariables has been streamlined.\n\n* tg/git-remote:\n  remote: use remote_is_configured() for add and rename\n  remote: actually check if remote exits\n  remote: simplify remote_is_configured()\n  remote: use parse_config_key","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/ae2f25542ffdd1919b33c8f274f8172e49d64dbf"},{"sha":"26f7b5c79ace2df0475f8d04d1a5141e21615ddd","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'kn/ref-filter-atom-parsing'\n\nThe ref-filter's format-parsing code has been refactored, in\npreparation for \"branch --format\" and friends.\n\n* kn/ref-filter-atom-parsing:\n  ref-filter: introduce objectname_atom_parser()\n  ref-filter: introduce contents_atom_parser()\n  ref-filter: introduce remote_ref_atom_parser()\n  ref-filter: align: introduce long-form syntax\n  ref-filter: introduce align_atom_parser()\n  ref-filter: introduce parse_align_position()\n  ref-filter: introduce color_atom_parser()\n  ref-filter: introduce parsing functions for each valid atom\n  ref-filter: introduce struct used_atom\n  ref-filter: bump 'used_atom' and related code to the top\n  ref-filter: use string_list_split over strbuf_split","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/26f7b5c79ace2df0475f8d04d1a5141e21615ddd"},{"sha":"7943cba1ded6c5e295d06f9de6664999db5a09a8","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'ak/extract-argv0-last-dir-sep'\n\nCode simplification.\n\n* ak/extract-argv0-last-dir-sep:\n  exec_cmd.c: use find_last_dir_sep() for code simplification","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/7943cba1ded6c5e295d06f9de6664999db5a09a8"},{"sha":"dede29612a723a7da9f489fecbdf02500a018430","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'ak/git-strip-extension-from-dashed-command'\n\nCode simplification.\n\n* ak/git-strip-extension-from-dashed-command:\n  git.c: simplify stripping extension of a file in handle_builtin()","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/dede29612a723a7da9f489fecbdf02500a018430"},{"sha":"18b26b18c50637eaa8fb1ae5f42fd94c8ac99507","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'jk/no-diff-emit-common'\n\n\"git merge-tree\" used to mishandle \"both sides added\" conflict with\nits own \"create a fake ancestor file that has the common parts of\nwhat both sides have added and do a 3-way merge\" logic; this has\nbeen updated to use the usual \"3-way merge with an empty blob as\nthe fake common ancestor file\" approach used in the rest of the\nsystem.\n\n* jk/no-diff-emit-common:\n  xdiff: drop XDL_EMIT_COMMON\n  merge-tree: drop generate_common strategy\n  merge-one-file: use empty blob for add/add base","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/18b26b18c50637eaa8fb1ae5f42fd94c8ac99507"},{"sha":"3ed26a44b3415f5761bdab21f823d964c20a2824","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'jk/more-comments-on-textconv'\n\nThe memory ownership rule of fill_textconv() API, which was a bit\ntricky, has been documented a bit better.\n\n* jk/more-comments-on-textconv:\n  diff: clarify textconv interface","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/3ed26a44b3415f5761bdab21f823d964c20a2824"},{"sha":"11529ecec914d2f0d7575e6d443c2d5a6ff75424","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'jk/tighten-alloc'\n\nUpdate various codepaths to avoid manually-counted malloc().\n\n* jk/tighten-alloc: (22 commits)\n  ewah: convert to REALLOC_ARRAY, etc\n  convert ewah/bitmap code to use xmalloc\n  diff_populate_gitlink: use a strbuf\n  transport_anonymize_url: use xstrfmt\n  git-compat-util: drop mempcpy compat code\n  sequencer: simplify memory allocation of get_message\n  test-path-utils: fix normalize_path_copy output buffer size\n  fetch-pack: simplify add_sought_entry\n  fast-import: simplify allocation in start_packfile\n  write_untracked_extension: use FLEX_ALLOC helper\n  prepare_{git,shell}_cmd: use argv_array\n  use st_add and st_mult for allocation size computation\n  convert trivial cases to FLEX_ARRAY macros\n  use xmallocz to avoid size arithmetic\n  convert trivial cases to ALLOC_ARRAY\n  convert manual allocations to argv_array\n  argv-array: add detach function\n  add helpers for allocating flex-array structs\n  harden REALLOC_ARRAY and xcalloc against size_t overflow\n  tree-diff: catch integer overflow in combine_diff_path allocation\n  ...","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/11529ecec914d2f0d7575e6d443c2d5a6ff75424"},{"sha":"dd0f567f1041a3caea7856b3efe20f8fb9b487b5","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'ls/config-origin'\n\nThe configuration system has been taught to phrase where it found a\nbad configuration variable in a better way in its error messages.\n\"git config\" learnt a new \"--show-origin\" option to indicate where\nthe values come from.\n\n* ls/config-origin:\n  config: add '--show-origin' option to print the origin of a config value\n  config: add 'origin_type' to config_source struct\n  rename git_config_from_buf to git_config_from_mem\n  t: do not hide Git's exit code in tests using 'nul_to_q'","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/dd0f567f1041a3caea7856b3efe20f8fb9b487b5"},{"sha":"56d4e7e6c347f8986a6621ca89ae3eec055bcf59","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'mg/work-tree-tests'\n\nTraditionally, the tests that try commands that work on the\ncontents in the working tree were named with \"worktree\" in their\nfilenames, but with the recent addition of \"git worktree\"\nsubcommand, whose tests are also named similarly, it has become\nharder to tell them apart.  The traditional tests have been renamed\nto use \"work-tree\" instead in an attempt to differentiate them.\n\n* mg/work-tree-tests:\n  tests: rename work-tree tests to *work-tree*","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/56d4e7e6c347f8986a6621ca89ae3eec055bcf59"},{"sha":"225caa73f25f8577a710f406b2670c3bcf0aef34","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'ps/config-error'\n\nMany codepaths forget to check return value from git_config_set();\nthe function is made to die() to make sure we do not proceed when\nsetting a configuration variable failed.\n\n* ps/config-error:\n  config: rename git_config_set_or_die to git_config_set\n  config: rename git_config_set to git_config_set_gently\n  compat: die when unable to set core.precomposeunicode\n  sequencer: die on config error when saving replay opts\n  init-db: die on config errors when initializing empty repo\n  clone: die on config error in cmd_clone\n  remote: die on config error when manipulating remotes\n  remote: die on config error when setting/adding branches\n  remote: die on config error when setting URL\n  submodule--helper: die on config error when cloning module\n  submodule: die on config error when linking modules\n  branch: die on config error when editing branch description\n  branch: die on config error when unsetting upstream\n  branch: report errors in tracking branch setup\n  config: introduce set_or_die wrappers","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/225caa73f25f8577a710f406b2670c3bcf0aef34"},{"sha":"2a24444aaeaabd8559751b02015c025157604f38","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'jg/credential-cache-chdir-to-sockdir'\n\nThe \"credential-cache\" daemon process used to run in whatever\ndirectory it happened to start in, but this made umount(2)ing the\nfilesystem that houses the repository harder; now the process\nchdir()s to the directory that house its own socket on startup.\n\n* jg/credential-cache-chdir-to-sockdir:\n  credential-cache--daemon: change to the socket dir on startup\n  credential-cache--daemon: disallow relative socket path\n  credential-cache--daemon: refactor check_socket_directory","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/2a24444aaeaabd8559751b02015c025157604f38"},{"sha":"1e4c08ff7e0f1d17b4a8e2c04edca8fc00455881","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'mm/push-simple-doc'\n\nThe documentation did not clearly state that the 'simple' mode is\nnow the default for \"git push\" when push.default configuration is\nnot set.\n\n* mm/push-simple-doc:\n  Documentation/git-push: document that 'simple' is the default","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/1e4c08ff7e0f1d17b4a8e2c04edca8fc00455881"},{"sha":"c1fa85ff8ceae0e882d19b1548de407994ee4180","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'ps/plug-xdl-merge-leak'\n\n* ps/plug-xdl-merge-leak:\n  xdiff/xmerge: fix memory leak in xdl_merge","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/c1fa85ff8ceae0e882d19b1548de407994ee4180"},{"sha":"316336379cf7937c2ecf122c7197cfe5da6b2061","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'jk/grep-binary-workaround-in-test'\n\nRecent versions of GNU grep are pickier when their input contains\narbitrary binary data, which some of our tests uses.  Rewrite the\ntests to sidestep the problem.\n\n* jk/grep-binary-workaround-in-test:\n  t9200: avoid grep on non-ASCII data\n  t8005: avoid grep on non-ASCII data","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/316336379cf7937c2ecf122c7197cfe5da6b2061"},{"sha":"c6b94eb0093216f7a02a8c7a350d1760478a52a1","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'tb/conversion'\n\nCode simplification.\n\n* tb/conversion:\n  convert.c: correct attr_action()\n  convert.c: simplify text_stat\n  convert.c: refactor crlf_action\n  convert.c: use text_eol_is_crlf()\n  convert.c: remove input_crlf_action()\n  convert.c: remove unused parameter 'path'\n  t0027: add tests for get_stream_filter()","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/c6b94eb0093216f7a02a8c7a350d1760478a52a1"},{"sha":"03f682bf740e6e617075e7e14e7f477190de8ab3","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'sb/submodule-module-list-fix'\n\nA helper function \"git submodule\" uses since v2.7.0 to list the\nmodules that match the pathspec argument given to its subcommands\n(e.g. \"submodule add <repo> <path>\") has been fixed.\n\n* sb/submodule-module-list-fix:\n  submodule helper list: respect correct path prefix","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/03f682bf740e6e617075e7e14e7f477190de8ab3"}]}