diff options
author | Junio C Hamano <gitster@pobox.com> | 2015-12-08 14:05:03 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-12-08 14:05:03 -0800 |
commit | b5d2d8eef0ad08022a3f635c0bc292eb2cc5aefc (patch) | |
tree | 591e520fa223ef9294eb0fe50b7868023f3262a3 /compat/sha1-chunked.c | |
parent | Merge branch 'sg/bash-prompt-dirty-orphan' into maint (diff) | |
parent | sha1: allow limiting the size of the data passed to SHA1_Update() (diff) | |
download | tgif-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.c | 19 |
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; +} |