]> git.ipfire.org Git - thirdparty/git.git/commitdiff
http-push: convert to use the_hash_algo
authorbrian m. carlson <sandals@crustytoothpaste.net>
Tue, 19 Feb 2019 00:05:09 +0000 (00:05 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 1 Apr 2019 02:57:38 +0000 (11:57 +0900)
Switch the lock token code to use the_hash_algo and increase its buffers
to be allocated using GIT_MAX_* constants.  Update the parsing of object
paths to use the_hash_algo as well.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
http-push.c

index b313ada515daadaa67a11460e7a98106f713f41e..c4e5142bc9e5457162cef25a7fbe4f662f335c19 100644 (file)
@@ -145,7 +145,7 @@ struct remote_lock {
        char *url;
        char *owner;
        char *token;
-       char tmpfile_suffix[41];
+       char tmpfile_suffix[GIT_MAX_HEXSZ + 1];
        time_t start_time;
        long timeout;
        int refreshing;
@@ -399,7 +399,7 @@ static void start_put(struct transfer_request *request)
        request->dest = strbuf_detach(&buf, NULL);
 
        append_remote_object_url(&buf, repo->url, hex, 0);
-       strbuf_add(&buf, request->lock->tmpfile_suffix, 41);
+       strbuf_add(&buf, request->lock->tmpfile_suffix, the_hash_algo->hexsz + 1);
        request->url = strbuf_detach(&buf, NULL);
 
        slot = get_active_slot();
@@ -758,8 +758,8 @@ static void handle_lockprop_ctx(struct xml_ctx *ctx, int tag_closed)
 static void handle_new_lock_ctx(struct xml_ctx *ctx, int tag_closed)
 {
        struct remote_lock *lock = (struct remote_lock *)ctx->userData;
-       git_SHA_CTX sha_ctx;
-       unsigned char lock_token_sha1[20];
+       git_hash_ctx hash_ctx;
+       unsigned char lock_token_hash[GIT_MAX_RAWSZ];
 
        if (tag_closed && ctx->cdata) {
                if (!strcmp(ctx->name, DAV_ACTIVELOCK_OWNER)) {
@@ -771,12 +771,12 @@ static void handle_new_lock_ctx(struct xml_ctx *ctx, int tag_closed)
                } else if (!strcmp(ctx->name, DAV_ACTIVELOCK_TOKEN)) {
                        lock->token = xstrdup(ctx->cdata);
 
-                       git_SHA1_Init(&sha_ctx);
-                       git_SHA1_Update(&sha_ctx, lock->token, strlen(lock->token));
-                       git_SHA1_Final(lock_token_sha1, &sha_ctx);
+                       the_hash_algo->init_fn(&hash_ctx);
+                       the_hash_algo->update_fn(&hash_ctx, lock->token, strlen(lock->token));
+                       the_hash_algo->final_fn(lock_token_hash, &hash_ctx);
 
                        lock->tmpfile_suffix[0] = '_';
-                       memcpy(lock->tmpfile_suffix + 1, sha1_to_hex(lock_token_sha1), 40);
+                       memcpy(lock->tmpfile_suffix + 1, hash_to_hex(lock_token_hash), the_hash_algo->hexsz);
                }
        }
 }
@@ -1018,7 +1018,7 @@ static void remote_ls(const char *path, int flags,
 /* extract hex from sharded "xx/x{38}" filename */
 static int get_oid_hex_from_objpath(const char *path, struct object_id *oid)
 {
-       if (strlen(path) != GIT_SHA1_HEXSZ + 1)
+       if (strlen(path) != the_hash_algo->hexsz + 1)
                return -1;
 
        if (hex_to_bytes(oid->hash, path, 1))
@@ -1026,7 +1026,7 @@ static int get_oid_hex_from_objpath(const char *path, struct object_id *oid)
        path += 2;
        path++; /* skip '/' */
 
-       return hex_to_bytes(oid->hash + 1, path, GIT_SHA1_RAWSZ - 1);
+       return hex_to_bytes(oid->hash + 1, path, the_hash_algo->rawsz - 1);
 }
 
 static void process_ls_object(struct remote_ls_ctx *ls)