While attempting to fix a reference negotiation bug in bundle-uri, we discovered that the fetch process are missing some helpful object validation logic when processing bundles. The main issues are: * In the bundle-uri scenario, we did not validate object IDs before writing bundle references. This is the root cause of the original negotiation bug in bundle-uri, and can cause potential repository corruption. * The existing fetch.fsckObjects and transfer.fsckObjects are not detected when directly fetching bundles. In fact there is no object validation support for unbundle. The first patch fixes the bundle-uri negotiation issue by dropping the REF_SKIP_OID_VERIFICATION flag when writing bundle references. Patch 2~4 extend bundle.c:unbundle with a unbundle_fsck_flags to control object fscking in different scenarios, the implementation mainly follows what Junio suggested on the mailing list. Xing Xin (4): bundle-uri: verify oid before writing refs unbundle: introduce unbundle_fsck_flags for fsckobjects handling fetch-pack: expose fsckObjects configuration logic unbundle: introduce new option UNBUNDLE_FSCK_FOLLOW_FETCH builtin/bundle.c | 2 +- bundle-uri.c | 5 +- bundle.c | 20 ++++- bundle.h | 9 +- fetch-pack.c | 18 ++-- fetch-pack.h | 2 + t/t5558-clone-bundle-uri.sh | 163 +++++++++++++++++++++++++++++++++++- t/t5607-clone-bundle.sh | 23 +++++ transport.c | 2 +- 9 files changed, 227 insertions(+), 17 deletions(-) base-commit: b9cfe4845cb2562584837bc0101c0ab76490a239 Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1730%2Fblanet%2Fxx%2Fbundle-uri-bug-using-bundle-list-v3 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1730/blanet/xx/bundle-uri-bug-using-bundle-list-v3 Pull-Request: https://github.com/gitgitgadget/git/pull/1730 Range-diff vs v2: 1: 8bdeacf1360 = 1: 8f488a5eeaa bundle-uri: verify oid before writing refs -: ----------- > 2: 057c697970f unbundle: introduce unbundle_fsck_flags for fsckobjects handling -: ----------- > 3: 67401d4fbcb fetch-pack: expose fsckObjects configuration logic -: ----------- > 4: c19b8f633cb unbundle: introduce new option UNBUNDLE_FSCK_FOLLOW_FETCH -- gitgitgadget