[master] timing safe memory comparisons
4183. [cleanup] Use timing-safe memory comparisons in cryptographic code. Also, the timing-safe comparison functions have been renamed to avoid possible confusion with memcmp(). [RT #40148]
This commit is contained in:
@@ -28,25 +28,46 @@
|
||||
#include <isc/safe.h>
|
||||
#include <isc/util.h>
|
||||
|
||||
ATF_TC(isc_safe_memcmp);
|
||||
ATF_TC_HEAD(isc_safe_memcmp, tc) {
|
||||
atf_tc_set_md_var(tc, "descr", "safe memcmp()");
|
||||
ATF_TC(isc_safe_memequal);
|
||||
ATF_TC_HEAD(isc_safe_memequal, tc) {
|
||||
atf_tc_set_md_var(tc, "descr", "safe memequal()");
|
||||
}
|
||||
ATF_TC_BODY(isc_safe_memcmp, tc) {
|
||||
ATF_TC_BODY(isc_safe_memequal, tc) {
|
||||
UNUSED(tc);
|
||||
|
||||
ATF_CHECK(isc_safe_memcmp("test", "test", 4));
|
||||
ATF_CHECK(!isc_safe_memcmp("test", "tesc", 4));
|
||||
ATF_CHECK(isc_safe_memcmp("\x00\x00\x00\x00", "\x00\x00\x00\x00", 4));
|
||||
ATF_CHECK(!isc_safe_memcmp("\x00\x00\x00\x00", "\x00\x00\x00\x01", 4));
|
||||
ATF_CHECK(!isc_safe_memcmp("\x00\x00\x00\x02", "\x00\x00\x00\x00", 4));
|
||||
ATF_CHECK(isc_safe_memequal("test", "test", 4));
|
||||
ATF_CHECK(!isc_safe_memequal("test", "tesc", 4));
|
||||
ATF_CHECK(isc_safe_memequal("\x00\x00\x00\x00",
|
||||
"\x00\x00\x00\x00", 4));
|
||||
ATF_CHECK(!isc_safe_memequal("\x00\x00\x00\x00",
|
||||
"\x00\x00\x00\x01", 4));
|
||||
ATF_CHECK(!isc_safe_memequal("\x00\x00\x00\x02",
|
||||
"\x00\x00\x00\x00", 4));
|
||||
}
|
||||
|
||||
ATF_TC(isc_safe_memcompare);
|
||||
ATF_TC_HEAD(isc_safe_memcompare, tc) {
|
||||
atf_tc_set_md_var(tc, "descr", "safe memcompare()");
|
||||
}
|
||||
ATF_TC_BODY(isc_safe_memcompare, tc) {
|
||||
UNUSED(tc);
|
||||
|
||||
ATF_CHECK(isc_safe_memcompare("test", "test", 4) == 0);
|
||||
ATF_CHECK(isc_safe_memcompare("test", "tesc", 4) > 0);
|
||||
ATF_CHECK(isc_safe_memcompare("test", "tesy", 4) < 0);
|
||||
ATF_CHECK(isc_safe_memcompare("\x00\x00\x00\x00",
|
||||
"\x00\x00\x00\x00", 4) == 0);
|
||||
ATF_CHECK(isc_safe_memcompare("\x00\x00\x00\x00",
|
||||
"\x00\x00\x00\x01", 4) < 0);
|
||||
ATF_CHECK(isc_safe_memcompare("\x00\x00\x00\x02",
|
||||
"\x00\x00\x00\x00", 4) > 0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Main
|
||||
*/
|
||||
ATF_TP_ADD_TCS(tp) {
|
||||
ATF_TP_ADD_TC(tp, isc_safe_memcmp);
|
||||
ATF_TP_ADD_TC(tp, isc_safe_memequal);
|
||||
ATF_TP_ADD_TC(tp, isc_safe_memcompare);
|
||||
return (atf_no_error());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user