summaryrefslogtreecommitdiff
path: root/compat/sha1-chunked.c
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2015-12-08 14:05:03 -0800
committerLibravatar Junio C Hamano <gitster@pobox.com>2015-12-08 14:05:03 -0800
commitb5d2d8eef0ad08022a3f635c0bc292eb2cc5aefc (patch)
tree591e520fa223ef9294eb0fe50b7868023f3262a3 /compat/sha1-chunked.c
parentMerge branch 'sg/bash-prompt-dirty-orphan' into maint (diff)
parentsha1: allow limiting the size of the data passed to SHA1_Update() (diff)
downloadtgif-b5d2d8eef0ad08022a3f635c0bc292eb2cc5aefc.tar.xz
Merge branch 'ad/sha1-update-chunked' into maint
Apple's common crypto implementation of SHA1_Update() does not take more than 4GB at a time, and we now have a compile-time workaround for it. * ad/sha1-update-chunked: sha1: allow limiting the size of the data passed to SHA1_Update() sha1: provide another level of indirection for the SHA-1 functions
Diffstat (limited to 'compat/sha1-chunked.c')
-rw-r--r--compat/sha1-chunked.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/compat/sha1-chunked.c b/compat/sha1-chunked.c
new file mode 100644
index 0000000000..6adfcfd540
--- /dev/null
+++ b/compat/sha1-chunked.c
@@ -0,0 +1,19 @@
+#include "cache.h"
+
+int git_SHA1_Update_Chunked(platform_SHA_CTX *c, const void *data, size_t len)
+{
+ size_t nr;
+ size_t total = 0;
+ const char *cdata = (const char*)data;
+
+ while (len) {
+ nr = len;
+ if (nr > SHA1_MAX_BLOCK_SIZE)
+ nr = SHA1_MAX_BLOCK_SIZE;
+ platform_SHA1_Update(c, cdata, nr);
+ total += nr;
+ cdata += nr;
+ len -= nr;
+ }
+ return total;
+}