From: Linux Karlsson Date: Sun, 13 Jun 2010 14:04:31 +0000 (+0200) Subject: Fixed a serious bug when testing a_md5encrypt(), and added more tests for hextolfp X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ffc86bad413f67013d4a415bbf2df59b30f85fcb;p=thirdparty%2Fntp.git Fixed a serious bug when testing a_md5encrypt(), and added more tests for hextolfp bk: 4c14e56f3x0IZpvxngdj1c4f7qwTtQ --- diff --git a/tests/libntp/a_md5encrypt.cpp b/tests/libntp/a_md5encrypt.cpp index f0ea730bf7..bcf76a0f3b 100644 --- a/tests/libntp/a_md5encrypt.cpp +++ b/tests/libntp/a_md5encrypt.cpp @@ -14,7 +14,7 @@ protected: */ const int keytype = KEY_TYPE_MD5; const char *key = "abcdefgh"; -const int keylength = 8; +const int keyLength = 8; const char *packet = "ijklmnopqrstuvwx"; const int packetLength = 16; const int keyIdLength = 4; @@ -24,25 +24,30 @@ const char *expectedPacket = "ijklmnopqrstuvwx\0\0\0\0\x0c\x0e\x84\xcf\x0b\xb7\x TEST_F(a_md5encryptTest, Encrypt) { char *packetPtr = new char[totalLength]; + memset(packetPtr+packetLength, 0, keyIdLength); memcpy(packetPtr, packet, packetLength); - cache_keylen = keyIdLength; + cache_keylen = keyLength; - int length = MD5authencrypt(KEY_TYPE_MD5, (u_char*)key, (u_int32*)packetPtr, packetLength); + int length = MD5authencrypt(keytype, (u_char*)key, (u_int32*)packetPtr, packetLength); + + EXPECT_TRUE(MD5authdecrypt(keytype, (u_char*)key, (u_int32*)packetPtr, packetLength, length)); EXPECT_EQ(20, length); - EXPECT_TRUE(memcmp(expectedPacket, packetPtr, totalLength)); + EXPECT_TRUE(memcmp(expectedPacket, packetPtr, totalLength) == 0); delete[] packetPtr; } TEST_F(a_md5encryptTest, DecryptValid) { - cache_keylen = keylength; + cache_keylen = keyLength; EXPECT_TRUE(MD5authdecrypt(keytype, (u_char*)key, (u_int32*)expectedPacket, packetLength, 20)); } TEST_F(a_md5encryptTest, DecryptInvalid) { + cache_keylen = keyLength; + const char *invalidPacket = "ijklmnopqrstuvwx\0\0\0\0\x0c\x0e\x84\xcf\x0b\xb7\xa8\x68\x8e\x52\x38\xdb\xbc\x1c\x39\x54"; EXPECT_FALSE(MD5authdecrypt(keytype, (u_char*)key, (u_int32*)invalidPacket, packetLength, 20)); diff --git a/tests/libntp/hextolfp.cpp b/tests/libntp/hextolfp.cpp index 9391a5a434..f99fc4385e 100644 --- a/tests/libntp/hextolfp.cpp +++ b/tests/libntp/hextolfp.cpp @@ -23,3 +23,36 @@ TEST_F(hextolfpTest, NegativeInteger) { EXPECT_TRUE(IsEqual(expected, actual)); } +TEST_F(hextolfpTest, PositiveFraction) { + const char *str = "00002000.80000000"; // 8196.5 decimal + l_fp actual; + + l_fp expected = {8192, -2147483648}; + + ASSERT_TRUE(hextolfp(str, &actual)); + EXPECT_TRUE(IsEqual(expected, actual)); +} + +TEST_F(hextolfpTest, NegativeFraction) { + const char *str = "ffffffff.40000000"; // -1 + 0.25 decimal + l_fp actual; + + l_fp expected = {-1, 1073741824}; //-1 + 0.25 + + ASSERT_TRUE(hextolfp(str, &actual)); + EXPECT_TRUE(IsEqual(expected, actual)); +} + +TEST_F(hextolfpTest, IllegalNumberOfInteger) { + const char *str = "1000000.00000000"; // Missing one digit in integral part. + l_fp actual; + + ASSERT_FALSE(hextolfp(str, &actual)); +} + +TEST_F(hextolfpTest, IllegalChar) { + const char *str = "10000000.0000h000"; // Illegal character h. + l_fp actual; + + ASSERT_FALSE(hextolfp(str, &actual)); +}