]> git.proxmox.com Git - libgit2.git/blobdiff - src/hash/hash_collisiondetect.h
New upstream version 0.28.4+dfsg.1
[libgit2.git] / src / hash / hash_collisiondetect.h
index 2bb27ba14c0477eba538d2c1b1392e97a5fe6a09..743209802389bb81093acaee85b049b397e88707 100644 (file)
@@ -5,8 +5,8 @@
  * a Linking Exception. For full terms see the included COPYING file.
  */
 
-#ifndef INCLUDE_hash_collisiondetect_h__
-#define INCLUDE_hash_collisiondetect_h__
+#ifndef INCLUDE_hash_hash_collisiondetect_h__
+#define INCLUDE_hash_hash_collisiondetect_h__
 
 #include "hash.h"
 #include "sha1dc/sha1.h"
@@ -15,10 +15,14 @@ struct git_hash_ctx {
        SHA1_CTX c;
 };
 
-#define git_hash_global_init() 0
 #define git_hash_ctx_init(ctx) git_hash_init(ctx)
 #define git_hash_ctx_cleanup(ctx)
 
+GIT_INLINE(int) git_hash_global_init(void)
+{
+       return 0;
+}
+
 GIT_INLINE(int) git_hash_init(git_hash_ctx *ctx)
 {
        assert(ctx);
@@ -28,18 +32,8 @@ GIT_INLINE(int) git_hash_init(git_hash_ctx *ctx)
 
 GIT_INLINE(int) git_hash_update(git_hash_ctx *ctx, const void *data, size_t len)
 {
-    const char *p = data;
-
        assert(ctx);
-
-       /* We expect a size_t, but sha1dc only takes an int */
-       while (len > INT_MAX) {
-               SHA1DCUpdate(&ctx->c, p, INT_MAX);
-               p += INT_MAX;
-               len -= INT_MAX;
-       }
-
-       SHA1DCUpdate(&ctx->c, p, len);
+       SHA1DCUpdate(&ctx->c, data, len);
        return 0;
 }
 
@@ -47,11 +41,11 @@ GIT_INLINE(int) git_hash_final(git_oid *out, git_hash_ctx *ctx)
 {
        assert(ctx);
        if (SHA1DCFinal(out->id, &ctx->c)) {
-               giterr_set(GITERR_SHA1, "SHA1 collision attack detected");
+               git_error_set(GIT_ERROR_SHA1, "SHA1 collision attack detected");
                return -1;
        }
 
        return 0;
 }
 
-#endif /* INCLUDE_hash_collisiondetect_h__ */
+#endif