mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-06 09:18:00 +00:00
Add an extra oid test to verify control characters aren't read
We only want hex digits to be read, any other character in the 8-bit character set is invalid within an id string. Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
parent
b81dd80e8c
commit
367ab010d6
@ -11,6 +11,43 @@ BEGIN_TEST(invalid_string_moo)
|
|||||||
must_fail(git_oid_mkstr(&out, "moo"));
|
must_fail(git_oid_mkstr(&out, "moo"));
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
|
static int from_hex(unsigned char i)
|
||||||
|
{
|
||||||
|
if (i >= '0' && i <= '9')
|
||||||
|
return i - '0';
|
||||||
|
if (i >= 'a' && i <= 'f')
|
||||||
|
return 10 + (i - 'a');
|
||||||
|
if (i >= 'A' && i <= 'F')
|
||||||
|
return 10 + (i - 'A');
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
BEGIN_TEST(invalid_string_all_chars)
|
||||||
|
git_oid out;
|
||||||
|
unsigned char exp[] = {
|
||||||
|
0x16, 0xa6, 0x77, 0x70, 0xb7,
|
||||||
|
0xd8, 0xd7, 0x23, 0x17, 0xc4,
|
||||||
|
0xb7, 0x75, 0x21, 0x3c, 0x23,
|
||||||
|
0xa8, 0xbd, 0x74, 0xf5, 0xe0,
|
||||||
|
};
|
||||||
|
char in[41] = "16a67770b7d8d72317c4b775213c23a8bd74f5e0\0";
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
for (i = 0; i < 256; i++) {
|
||||||
|
in[38] = (char)i;
|
||||||
|
|
||||||
|
if (from_hex(i) >= 0) {
|
||||||
|
exp[19] = (from_hex(i) << 4);
|
||||||
|
if (git_oid_mkstr(&out, in))
|
||||||
|
test_die("line %d: must accept '%s'", __LINE__, in);
|
||||||
|
if (memcmp(out.id, exp, sizeof(out.id)))
|
||||||
|
test_die("line %d: bad parse of '%s', %x != %x",
|
||||||
|
__LINE__, in, exp[19], out.id[19]);
|
||||||
|
} else if (!git_oid_mkstr(&out, in))
|
||||||
|
test_die("line %d: must not accept '%s'", __LINE__, in);
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
BEGIN_TEST(invalid_string_16a67770b7d8d72317c4b775213c23a8bd74f5ez)
|
BEGIN_TEST(invalid_string_16a67770b7d8d72317c4b775213c23a8bd74f5ez)
|
||||||
git_oid out;
|
git_oid out;
|
||||||
must_fail(git_oid_mkstr(&out, "16a67770b7d8d72317c4b775213c23a8bd74f5ez"));
|
must_fail(git_oid_mkstr(&out, "16a67770b7d8d72317c4b775213c23a8bd74f5ez"));
|
||||||
|
Loading…
Reference in New Issue
Block a user