зеркало из https://github.com/microsoft/git.git
hex: drop sha1_to_hex()
There's only a single caller left of sha1_to_hex(), since everybody that has an object name in "unsigned char[]" now uses hash_to_hex() instead. This case is in the sha1dc wrapper, where we print a hex sha1 when we find a collision. This one will always be sha1, regardless of the current hash algorithm, so we can't use hash_to_hex() here. In practice we'd probably not be running sha1 at all if it isn't the current algorithm, but it's possible we might still occasionally need to compute a sha1 in a post-sha256 world. Since sha1_to_hex() is just a wrapper for hash_to_hex_algop(), let's call that ourselves. There's value in getting rid of the sha1-specific wrapper to de-clutter the global namespace, and to make sure nobody uses it (and as with sha1_to_hex_r() in the previous patch, we'll drop the coccinelle transformations, too). The sha1_to_hex() function is mentioned in a comment; we can easily swap that out for oid_to_hex() to give a better example. Also update the comment that was left stale when we added "struct object_id *" as a way to name an object and added functions to convert it to hex. The function is also mentioned in some test vectors in t4100, but that's not runnable code, so there's no point in trying to clean it up. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
aa6d7f93ed
Коммит
b19f3fe9dd
7
cache.h
7
cache.h
|
@ -1451,7 +1451,8 @@ int get_oid_hex(const char *hex, struct object_id *sha1);
|
|||
int hex_to_bytes(unsigned char *binary, const char *hex, size_t len);
|
||||
|
||||
/*
|
||||
* Convert a binary hash to its hex equivalent. The `_r` variant is reentrant,
|
||||
* Convert a binary hash in "unsigned char []" or an object name in
|
||||
* "struct object_id *" to its hex equivalent. The `_r` variant is reentrant,
|
||||
* and writes the NUL-terminated output to the buffer `out`, which must be at
|
||||
* least `GIT_MAX_HEXSZ + 1` bytes, and returns a pointer to out for
|
||||
* convenience.
|
||||
|
@ -1459,12 +1460,12 @@ int hex_to_bytes(unsigned char *binary, const char *hex, size_t len);
|
|||
* The non-`_r` variant returns a static buffer, but uses a ring of 4
|
||||
* buffers, making it safe to make multiple calls for a single statement, like:
|
||||
*
|
||||
* printf("%s -> %s", sha1_to_hex(one), sha1_to_hex(two));
|
||||
* printf("%s -> %s", hash_to_hex(one), hash_to_hex(two));
|
||||
* printf("%s -> %s", oid_to_hex(one), oid_to_hex(two));
|
||||
*/
|
||||
char *hash_to_hex_algop_r(char *buffer, const unsigned char *hash, const struct git_hash_algo *);
|
||||
char *oid_to_hex_r(char *out, const struct object_id *oid);
|
||||
char *hash_to_hex_algop(const unsigned char *hash, const struct git_hash_algo *); /* static buffer result! */
|
||||
char *sha1_to_hex(const unsigned char *sha1); /* same static buffer */
|
||||
char *hash_to_hex(const unsigned char *hash); /* same static buffer */
|
||||
char *oid_to_hex(const struct object_id *oid); /* same static buffer */
|
||||
|
||||
|
|
|
@ -10,21 +10,6 @@ struct object_id *OIDPTR;
|
|||
- is_null_sha1(OIDPTR->hash)
|
||||
+ is_null_oid(OIDPTR)
|
||||
|
||||
@@
|
||||
struct object_id OID;
|
||||
@@
|
||||
- sha1_to_hex(OID.hash)
|
||||
+ oid_to_hex(&OID)
|
||||
|
||||
@@
|
||||
identifier f != oid_to_hex;
|
||||
struct object_id *OIDPTR;
|
||||
@@
|
||||
f(...) {<...
|
||||
- sha1_to_hex(OIDPTR->hash)
|
||||
+ oid_to_hex(OIDPTR)
|
||||
...>}
|
||||
|
||||
@@
|
||||
struct object_id OID;
|
||||
@@
|
||||
|
|
5
hex.c
5
hex.c
|
@ -103,11 +103,6 @@ char *hash_to_hex_algop(const unsigned char *hash, const struct git_hash_algo *a
|
|||
return hash_to_hex_algop_r(hexbuffer[bufno], hash, algop);
|
||||
}
|
||||
|
||||
char *sha1_to_hex(const unsigned char *sha1)
|
||||
{
|
||||
return hash_to_hex_algop(sha1, &hash_algos[GIT_HASH_SHA1]);
|
||||
}
|
||||
|
||||
char *hash_to_hex(const unsigned char *hash)
|
||||
{
|
||||
return hash_to_hex_algop(hash, the_hash_algo);
|
||||
|
|
|
@ -19,7 +19,7 @@ void git_SHA1DCFinal(unsigned char hash[20], SHA1_CTX *ctx)
|
|||
if (!SHA1DCFinal(hash, ctx))
|
||||
return;
|
||||
die("SHA-1 appears to be part of a collision attack: %s",
|
||||
sha1_to_hex(hash));
|
||||
hash_to_hex_algop(hash, &hash_algos[GIT_HASH_SHA1]));
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Загрузка…
Ссылка в новой задаче