diff options
author | Vicent Marti <tanoku@gmail.com> | 2015-06-26 16:45:42 +0200 |
---|---|---|
committer | Vicent Marti <tanoku@gmail.com> | 2015-06-26 16:45:42 +0200 |
commit | 3d9ef2dc1befc9c63654633d3c714e11df85ddbc (patch) | |
tree | 3d954cb9fbaf0bd8be08557aabd2dddd78982d56 | |
parent | 14888070b941824b7f6369c60d7600594d215577 (diff) | |
download | libgit2-3d9ef2dc1befc9c63654633d3c714e11df85ddbc.tar.gz |
Revert "object: correct the expected ID size in prefix lookup"
This reverts commit 969d4b703c910a8fd045baafbcd243b4c9825316.
This was a fluke from Coverity. The length to all the APIs in the
library is supposed to be passed in as nibbles, not bytes. Passing it as
bytes would prevent us from parsing uneven-sized SHA1 strings.
Also, the rest of the library was still using nibbles (including
revparse and the odb_prefix APIs), so this change was seriously breaking
things in unexpected ways. ^^
-rw-r--r-- | src/object.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/object.c b/src/object.c index a178e0ed3..1073559fd 100644 --- a/src/object.c +++ b/src/object.c @@ -129,10 +129,10 @@ int git_object_lookup_prefix( if (error < 0) return error; - if (len > GIT_OID_RAWSZ) - len = GIT_OID_RAWSZ; + if (len > GIT_OID_HEXSZ) + len = GIT_OID_HEXSZ; - if (len == GIT_OID_RAWSZ) { + if (len == GIT_OID_HEXSZ) { git_cached_obj *cached = NULL; /* We want to match the full id : we can first look up in the cache, @@ -172,9 +172,9 @@ int git_object_lookup_prefix( memcpy(short_oid.id, id->id, (len + 1) / 2); if (len % 2) short_oid.id[len / 2] &= 0xF0; - memset(short_oid.id + (len + 1) / 2, 0, (GIT_OID_RAWSZ - len) / 2); + memset(short_oid.id + (len + 1) / 2, 0, (GIT_OID_HEXSZ - len) / 2); - /* If len < GIT_OID_RAWSZ (a strict short oid was given), we have + /* If len < GIT_OID_HEXSZ (a strict short oid was given), we have * 2 options : * - We always search in the cache first. If we find that short oid is * ambiguous, we can stop. But in all the other cases, we must then |