Skip to content

Commit 91365fd

Browse files
committed
sha1: tests should use hashes, not oid computation
The tests that examine sha1 behavior (including collision detection) should test against the hash functionality directly, not indirectly using the oid functions.
1 parent fc42c28 commit 91365fd

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

tests/core/sha1.c

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ void test_core_sha1__cleanup(void)
1313
cl_fixture_cleanup(FIXTURE_DIR);
1414
}
1515

16-
static int sha1_file(git_oid *out, const char *filename)
16+
static int sha1_file(unsigned char *out, const char *filename)
1717
{
1818
git_hash_ctx ctx;
1919
char buf[2048];
@@ -31,34 +31,40 @@ static int sha1_file(git_oid *out, const char *filename)
3131
cl_assert_equal_i(0, read_len);
3232
p_close(fd);
3333

34-
ret = git_hash_final(out->id, &ctx);
34+
ret = git_hash_final(out, &ctx);
3535
git_hash_ctx_cleanup(&ctx);
3636

3737
return ret;
3838
}
3939

4040
void test_core_sha1__sum(void)
4141
{
42-
git_oid oid, expected;
42+
unsigned char expected[GIT_HASH_SHA1_SIZE] = {
43+
0x4e, 0x72, 0x67, 0x9e, 0x3e, 0xa4, 0xd0, 0x4e, 0x0c, 0x64,
44+
0x2f, 0x02, 0x9e, 0x61, 0xeb, 0x80, 0x56, 0xc7, 0xed, 0x94
45+
};
46+
unsigned char actual[GIT_HASH_SHA1_SIZE];
4347

44-
cl_git_pass(sha1_file(&oid, FIXTURE_DIR "/hello_c"));
45-
git_oid_fromstr(&expected, "4e72679e3ea4d04e0c642f029e61eb8056c7ed94");
46-
cl_assert_equal_oid(&expected, &oid);
48+
cl_git_pass(sha1_file(actual, FIXTURE_DIR "/hello_c"));
49+
cl_assert_equal_i(0, memcmp(expected, actual, GIT_HASH_SHA1_SIZE));
4750
}
4851

4952
/* test that sha1 collision detection works when enabled */
5053
void test_core_sha1__detect_collision_attack(void)
5154
{
52-
git_oid oid, expected;
55+
unsigned char actual[GIT_HASH_SHA1_SIZE];
56+
unsigned char expected[GIT_HASH_SHA1_SIZE] = {
57+
0x38, 0x76, 0x2c, 0xf7, 0xf5, 0x59, 0x34, 0xb3, 0x4d, 0x17,
58+
0x9a, 0xe6, 0xa4, 0xc8, 0x0c, 0xad, 0xcc, 0xbb, 0x7f, 0x0a
59+
};
5360

5461
#ifdef GIT_SHA1_COLLISIONDETECT
5562
GIT_UNUSED(&expected);
56-
cl_git_fail(sha1_file(&oid, FIXTURE_DIR "/shattered-1.pdf"));
63+
cl_git_fail(sha1_file(actual, FIXTURE_DIR "/shattered-1.pdf"));
5764
cl_assert_equal_s("SHA1 collision attack detected", git_error_last()->message);
5865
#else
59-
cl_git_pass(sha1_file(&oid, FIXTURE_DIR "/shattered-1.pdf"));
60-
git_oid_fromstr(&expected, "38762cf7f55934b34d179ae6a4c80cadccbb7f0a");
61-
cl_assert_equal_oid(&expected, &oid);
66+
cl_git_pass(sha1_file(actual, FIXTURE_DIR "/shattered-1.pdf"));
67+
cl_assert_equal_i(0, memcmp(expected, actual, GIT_HASH_SHA1_SIZE));
6268
#endif
6369
}
6470

0 commit comments

Comments
 (0)