Skip to content

Commit

Permalink
[libgit2] Fix zlib stream abandonment causing clone error on 32-bit s…
Browse files Browse the repository at this point in the history
…ystems (#39772)

This backports libgit2 patch to fix zlib stream handling.
  • Loading branch information
kimikage committed Feb 23, 2021
1 parent 2e21b38 commit 503c63b
Show file tree
Hide file tree
Showing 5 changed files with 85 additions and 35 deletions.
2 changes: 1 addition & 1 deletion deps/Versions.make
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ CURL_JLL_NAME := LibCURL
LAPACK_VER := 3.9.0

# LibGit2
LIBGIT2_JLL_VER := 1.2.2+0
LIBGIT2_JLL_VER := 1.2.3+0
LIBGIT2_JLL_NAME := LibGit2

# LibSSH2
Expand Down
64 changes: 32 additions & 32 deletions deps/checksums/libgit2
Original file line number Diff line number Diff line change
@@ -1,34 +1,34 @@
libgit2-7f4fa178629d559c037a1f72f79f79af9c1ef8ce.tar.gz/md5/c6a819fb0bf924df61e1595624a0988a
libgit2-7f4fa178629d559c037a1f72f79f79af9c1ef8ce.tar.gz/sha512/3de9c042115b309dae3b8e0008edf2e762addd90a7bdb54b3cf634811271ab9dbfea35656650eb53a3faec73caf33ed199fb885ec21f611c79d909d9f4fe48c5
LibGit2.v1.2.2+0.aarch64-apple-darwin.tar.gz/md5/768643046e35a7594f731323bebad389
LibGit2.v1.2.2+0.aarch64-apple-darwin.tar.gz/sha512/7ff1e0eeb2651064cf530468206335bffbc87b13fc310de7f1d0b802b4a53d5aed9267053edeb59b6b2f2ce90548c3a3e90f8f657cb8206eaa19dbe6be065723
LibGit2.v1.2.2+0.aarch64-linux-gnu.tar.gz/md5/be6570490bbdac65b35c6ab8d8a109df
LibGit2.v1.2.2+0.aarch64-linux-gnu.tar.gz/sha512/d70c5bf5032f5b48992690951aa3a105341476ca7b2c25b706d03425c0b6323fbb8060c8dffec191721f2ecaa7eeb6cf9cd38d30cd29095443c14d6cc44744f2
LibGit2.v1.2.2+0.aarch64-linux-musl.tar.gz/md5/d4f7c9d31e1008a08e07eee3ac6a6b46
LibGit2.v1.2.2+0.aarch64-linux-musl.tar.gz/sha512/bd6b9c0ef8d9b4747594516df0e89f62ae42d0c96dc821428bf554f4bfcd843fb7f54999ea8a445dcbf3ca94096bf2f977311266310fa9928955c57bc78c64a6
LibGit2.v1.2.2+0.armv6l-linux-gnueabihf.tar.gz/md5/1d50d2d1b3a67a0ad5212473c4421903
LibGit2.v1.2.2+0.armv6l-linux-gnueabihf.tar.gz/sha512/10fca34a941a62631175b43cb662fde498104ebfa70a12271f319cb5c295dfafd02ce9a0a1cd3c677ccd253811102f32bba46b9e7935aafc63d49db18bc1d930
LibGit2.v1.2.2+0.armv6l-linux-musleabihf.tar.gz/md5/43bf610eb0ebd793f914c47924b022e0
LibGit2.v1.2.2+0.armv6l-linux-musleabihf.tar.gz/sha512/5594c836a2e8ea8be7c85ca6063401f8141edf87bd156460792f1d0f21002cf685cea1872edbf7c18412c3201754f350d6c3520c453763041abaf36e53d9a04b
LibGit2.v1.2.2+0.armv7l-linux-gnueabihf.tar.gz/md5/e0bb95d822e616dce731e0eae26f015b
LibGit2.v1.2.2+0.armv7l-linux-gnueabihf.tar.gz/sha512/855b7116a52e8a53789697d69c45470d102ed70a9bf6b8ec87370c0bdd530b9e1178ff18fe270f46113e099a88694a42423319db3eb41e53b0bc594c76536fd5
LibGit2.v1.2.2+0.armv7l-linux-musleabihf.tar.gz/md5/b4acf755de779ed6dbda48cfef8589b4
LibGit2.v1.2.2+0.armv7l-linux-musleabihf.tar.gz/sha512/fc9dd9a4d3e868085b54061b7eedf4f2331f5338e02b1de2c63ac9f7ddbb1b872b350365a82beb65a791a3872755111c832047622362d8b56d1d2b662b98bf09
LibGit2.v1.2.2+0.i686-linux-gnu.tar.gz/md5/efa3612e46fbe2826028b70ebdd6ab90
LibGit2.v1.2.2+0.i686-linux-gnu.tar.gz/sha512/c4d54e381a1ef6d972c5d82ad24bf3b9fd403f988e4ff6779579f994732450a2c93880be096861b9d43c836901eec173ca392bd759f52a7db358ceebd799487f
LibGit2.v1.2.2+0.i686-linux-musl.tar.gz/md5/72a361323ac5351241b9022a1bf2d6af
LibGit2.v1.2.2+0.i686-linux-musl.tar.gz/sha512/c6d5d169413f0effa217d35edb74f5cd6db1ca31b98459b2773ce927c66a9a434f206c89a6878218ac14a3e3ff717e8f22935dba17ae4a25d011542045363401
LibGit2.v1.2.2+0.i686-w64-mingw32.tar.gz/md5/6677a563b679f969c2b0f12eefd10c12
LibGit2.v1.2.2+0.i686-w64-mingw32.tar.gz/sha512/369944643a179aa6fea6a5ebb82ef07bdb9f220890f670bbf5ccd8285edb68f25d96a33b448c789aea4f649876caa89c00bb52d1e7a65a4ffc5a8c6692aa2523
LibGit2.v1.2.2+0.powerpc64le-linux-gnu.tar.gz/md5/cb9195eb5ab95d0ec53559ec2b42d4cc
LibGit2.v1.2.2+0.powerpc64le-linux-gnu.tar.gz/sha512/fc4387327f953174815988c8514c673529e3e2fa1b7209bfd80755890438bf10c644f85c988435bb45cd96d939fa5409f85d47e9a8ae0480b184ff718af53fa4
LibGit2.v1.2.2+0.x86_64-apple-darwin.tar.gz/md5/693080c66702c9ff106b0935f01d1f96
LibGit2.v1.2.2+0.x86_64-apple-darwin.tar.gz/sha512/f21d5846b443188a0c604255dce77603ea861db8d4c6fc55cebd5db6da07e94ae40f0a165221c95e13db9df8777fddb05f55c865f554f45e56cd442332a95336
LibGit2.v1.2.2+0.x86_64-linux-gnu.tar.gz/md5/493a08e9461756a7aff6c6982d54f598
LibGit2.v1.2.2+0.x86_64-linux-gnu.tar.gz/sha512/d2b4e7965d47cd73572884dc65c3596b0148390bcf22900f199d60663d44fc90ab1bd5dc733711d6acea9f063a6a2e974341e3a602ef11ee928b9f29c934e893
LibGit2.v1.2.2+0.x86_64-linux-musl.tar.gz/md5/153cc65bd29f4ff78b8f0502ae29f3b6
LibGit2.v1.2.2+0.x86_64-linux-musl.tar.gz/sha512/7238e6b8a7defdaaff7ca3b81404e6003179ede162fa33e92937f5af1e78ea7f652527dc5968e23d29305812690d88f57c6aeb9270b1f1d9e700a0e0674cc77c
LibGit2.v1.2.2+0.x86_64-unknown-freebsd.tar.gz/md5/6ff9aa266d900c6e4d894a8ef2c4425e
LibGit2.v1.2.2+0.x86_64-unknown-freebsd.tar.gz/sha512/e248ff490706f638c23873d90eef6b74e178a964ba80a73b2f330b4633157ecf91609aa19a3163d78b39aec49b9b93fc209877b98e1a631b7a166ad91395ff21
LibGit2.v1.2.2+0.x86_64-w64-mingw32.tar.gz/md5/4289124917d0ddfbd4bdeb87e3e4b0d9
LibGit2.v1.2.2+0.x86_64-w64-mingw32.tar.gz/sha512/49ba2217a537d45754cc0929589844b852c6e9ea300775952164510f012446671b799ce1614dcb8a8b82aa387495e5ecca641c2f3a985b788c2350712588aacc
LibGit2.v1.2.3+0.aarch64-apple-darwin.tar.gz/md5/d41d8cd98f00b204e9800998ecf8427e
LibGit2.v1.2.3+0.aarch64-apple-darwin.tar.gz/sha512/cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e
LibGit2.v1.2.3+0.aarch64-linux-gnu.tar.gz/md5/f2f31aa978e43aa68a0e73107067c7cd
LibGit2.v1.2.3+0.aarch64-linux-gnu.tar.gz/sha512/46f1ed9158cc00fc0ca71768e9a475d99597e4e63d806b061f08c2b5de40ecde61020f60ad4ff5a7377b52dfcd910c6610022fd95c1a08aa9af305489712786f
LibGit2.v1.2.3+0.aarch64-linux-musl.tar.gz/md5/aa1429e946185092bacda87fb5ff4ed2
LibGit2.v1.2.3+0.aarch64-linux-musl.tar.gz/sha512/2ab81db22c4ca9855a84835174cee249bc95c3a3158b72fe0c8d18da074ef7a7790bbd90ffb4ec5847ff23ef6098e7d9410ab765c27bdba8bafed5ab3820452a
LibGit2.v1.2.3+0.armv6l-linux-gnueabihf.tar.gz/md5/07bef4e0e69f1b1cfe870f554262bd3c
LibGit2.v1.2.3+0.armv6l-linux-gnueabihf.tar.gz/sha512/ccd424e5722e3319aa6dea25e088b7ab4ef30afbab57ba243c92db2cd9906d2b6110b866d4aee61bcd8a29e75fc6399b59109a1457d0fe4dd0e1d2c77aef3808
LibGit2.v1.2.3+0.armv6l-linux-musleabihf.tar.gz/md5/cb56cabe9e705e8ca81ea8f890498bc5
LibGit2.v1.2.3+0.armv6l-linux-musleabihf.tar.gz/sha512/45823b4f8fbd472fb508c0186baddb480f02356d193e493a541b064c92a919bbfad83df7ffa8b1631446c099e29cb109f4e1519246f9511ab81973ada9e2e22b
LibGit2.v1.2.3+0.armv7l-linux-gnueabihf.tar.gz/md5/ea80b5ca2fa469f5056d3716d173e15d
LibGit2.v1.2.3+0.armv7l-linux-gnueabihf.tar.gz/sha512/9040d8841dfcc26af42b409f776ce19bc232b7bf9679cd291c802d8e8186dd52d55bf085ca5bafdf1090a224c6fdf5bb42722434a8d771809d0bb083a768df90
LibGit2.v1.2.3+0.armv7l-linux-musleabihf.tar.gz/md5/be089f9e5986deca632f170b137879e3
LibGit2.v1.2.3+0.armv7l-linux-musleabihf.tar.gz/sha512/3266a3d40278324f4def5ff0823fce4859bc4eb065919500265ff962d01c7ebbcdfb8ba43b09d00a05ea2bb53a82984166442dfbc33ed6870a48b8af6cd26feb
LibGit2.v1.2.3+0.i686-linux-gnu.tar.gz/md5/27b9d4e956ce649d0c3c412e65662e4d
LibGit2.v1.2.3+0.i686-linux-gnu.tar.gz/sha512/85160f6950affbc8e161bf054ecdcf5cc09ecfac410765dae5f7ba35b3f2f5eb1a94f5b0299c1500ea6972be8dc2b9f0802a2f587c74aac4236c2c9c325fd573
LibGit2.v1.2.3+0.i686-linux-musl.tar.gz/md5/5f8f66ace7a0d564d36a93f6c60f2e9a
LibGit2.v1.2.3+0.i686-linux-musl.tar.gz/sha512/0438682a560ebdd13db1786748e5f08af327a6b9b9b8a4c70606696db4d311b45129ea67b960e14a4db948cbd741039afc3f4e9284adb209de168265b146d8eb
LibGit2.v1.2.3+0.i686-w64-mingw32.tar.gz/md5/b36dd8bffdc106c2f9cc6c8a694eed01
LibGit2.v1.2.3+0.i686-w64-mingw32.tar.gz/sha512/72d9230281b51f9530c3a33a139633b0e7199de3e001e1c265ac7d393ba5c6042b8fdc822b8a3bf661e113166459b2d61b8251dfdb68231bc3b7a3f10efc3bb6
LibGit2.v1.2.3+0.powerpc64le-linux-gnu.tar.gz/md5/6060a6bf226eae115b1af93937523104
LibGit2.v1.2.3+0.powerpc64le-linux-gnu.tar.gz/sha512/424e6b174c1cf19602fe0c2f01c432bc31e810a533093d990ef5e3bac46e23ff509437151f2932cf21b3bdd626c877689049fbe8891991256d8672dcc3339efc
LibGit2.v1.2.3+0.x86_64-apple-darwin.tar.gz/md5/10431767db6173db70cfd34a14223f3a
LibGit2.v1.2.3+0.x86_64-apple-darwin.tar.gz/sha512/8217b832ec98986465d89d3262cb2a9e409595978e39a5e21cc2c808576354515398a597c608258e74c7dc80cebb2563134ee6f903fd2ce371b4fdb953b07323
LibGit2.v1.2.3+0.x86_64-linux-gnu.tar.gz/md5/2e1d21253669ef438840662d661c0b4f
LibGit2.v1.2.3+0.x86_64-linux-gnu.tar.gz/sha512/c739d47165dff39800d4f3915c31d06dbe430f26730e00e04314fe813c4170d253f74cda6d8707c9240f3f0774b7e2ee9986c553a2892074756698b9eea6b7f1
LibGit2.v1.2.3+0.x86_64-linux-musl.tar.gz/md5/cf61d8502d04e9c561da341182c94aae
LibGit2.v1.2.3+0.x86_64-linux-musl.tar.gz/sha512/74aa67ab5a43fafcf6cb0a6389031e41d996f63b2a9b1fd6b0ff72159a10d199216fe1c4b882c6e7e052178db7d5213d7073ffc14ec648af19bea5eb55733e15
LibGit2.v1.2.3+0.x86_64-unknown-freebsd.tar.gz/md5/e1623fd3f8f564085d47ec650a40e724
LibGit2.v1.2.3+0.x86_64-unknown-freebsd.tar.gz/sha512/295d55b78b21ef1c2ba471c8b5618b168dd633e986db9e1ec3e9630e352446ab18e8fd0992010b6afdd922463bb285bc45885a8b35a502d574553fe61c1f7b9f
LibGit2.v1.2.3+0.x86_64-w64-mingw32.tar.gz/md5/c845901c4d9dc145f76469d45abad934
LibGit2.v1.2.3+0.x86_64-w64-mingw32.tar.gz/sha512/21951f3bc902f30b8cc75c3af233aa7fe8457e412e7758d556bf71de149c7f2325a5c4c204a7a462cc6a61b3dcb90f0d25e684ffd8617b0a1505a1d31cf2f69a
9 changes: 8 additions & 1 deletion deps/libgit2.mk
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,17 @@ $(LIBGIT2_SRC_PATH)/libgit2-hostkey.patch-applied: $(LIBGIT2_SRC_PATH)/libgit2-m
patch -p1 -f < $(SRCDIR)/patches/libgit2-hostkey.patch
echo 1 > $@

# This can be removed once a release with https://github.com/libgit2/libgit2/pull/5740 lands
$(LIBGIT2_SRC_PATH)/libgit2-continue-zlib.patch-applied: $(LIBGIT2_SRC_PATH)/libgit2-hostkey.patch-applied
cd $(LIBGIT2_SRC_PATH) && \
patch -p1 -f < $(SRCDIR)/patches/libgit2-continue-zlib.patch
echo 1 > $@

$(BUILDDIR)/$(LIBGIT2_SRC_DIR)/build-configured: \
$(LIBGIT2_SRC_PATH)/libgit2-agent-nonfatal.patch-applied \
$(LIBGIT2_SRC_PATH)/libgit2-mbedtls-incdir.patch-applied \
$(LIBGIT2_SRC_PATH)/libgit2-hostkey.patch-applied
$(LIBGIT2_SRC_PATH)/libgit2-hostkey.patch-applied \
$(LIBGIT2_SRC_PATH)/libgit2-continue-zlib.patch-applied

$(BUILDDIR)/$(LIBGIT2_SRC_DIR)/build-configured: $(LIBGIT2_SRC_PATH)/source-extracted
mkdir -p $(dir $@)
Expand Down
43 changes: 43 additions & 0 deletions deps/patches/libgit2-continue-zlib.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
commit 99ddda527b0e1964898c2bc9fbc23ea7afe96ae5
Author: Edward Thomson <[email protected]>
Date: Tue Dec 15 23:03:03 2020 +0000

pack: continue zlib while we can make progress

Continue the zlib stream as long as we can make progress; stop when we
stop getting output _or_ when zlib stops taking input from us.

(cherry picked from commit 93f61c5a9f638e76189cef2dbde7839a9af5ff54)

diff --git a/src/pack.c b/src/pack.c
index 1b5cf670f..1a208a051 100644
--- a/src/pack.c
+++ b/src/pack.c
@@ -841,7 +841,7 @@ static int packfile_unpack_compressed(

do {
size_t bytes = buffer_len - total;
- unsigned int window_len;
+ unsigned int window_len, consumed;
unsigned char *in;

if ((in = pack_window_open(p, mwindow, *position, &window_len)) == NULL) {
@@ -857,10 +857,15 @@ static int packfile_unpack_compressed(

git_mwindow_close(mwindow);

- if (!bytes)
- break;
+ consumed = window_len - (unsigned int)zstream.in_len;
+
+ if (!bytes && !consumed) {
+ git_error_set(GIT_ERROR_ZLIB, "error inflating zlib stream");
+ error = -1;
+ goto out;
+ }

- *position += window_len - zstream.in_len;
+ *position += consumed;
total += bytes;
} while (!git_zstream_eos(&zstream));

2 changes: 1 addition & 1 deletion stdlib/LibGit2_jll/Project.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name = "LibGit2_jll"
uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5"
version = "1.1.0+0"
version = "1.2.3+0"

[deps]
MbedTLS_jll = "c8ffd9c3-330d-5841-b78e-0817d7145fa1"
Expand Down

2 comments on commit 503c63b

@nanosoldier
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Executing the daily package evaluation, I will reply here when finished:

@nanosoldier runtests(ALL, isdaily = true)

@nanosoldier
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your package evaluation job has completed - possible new issues were detected. A full report can be found here. cc @maleadt

Please sign in to comment.