diff options
author | Kevin Jacobs <kjacobs@mozilla.com> | 2020-09-08 14:41:46 +0000 |
---|---|---|
committer | Kevin Jacobs <kjacobs@mozilla.com> | 2020-09-08 14:41:46 +0000 |
commit | ac7687cb4d4321247ff9032d25df145581b5be06 (patch) | |
tree | 2c6f6704d82c9d3a9553dd9a6071409c6c76c2be /gtests/freebl_gtest | |
parent | 64d967b3b5e3874bc3636332847a5def728e1e0c (diff) | |
download | nss-hg-ac7687cb4d4321247ff9032d25df145581b5be06.tar.gz |
Bug 1605922 - Account for negative sign in mp_radix_size r=bbeurdouche
Differential Revision: https://phabricator.services.mozilla.com/D86443
Diffstat (limited to 'gtests/freebl_gtest')
-rw-r--r-- | gtests/freebl_gtest/mpi_unittest.cc | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/gtests/freebl_gtest/mpi_unittest.cc b/gtests/freebl_gtest/mpi_unittest.cc index 37dc1f978..0503006f9 100644 --- a/gtests/freebl_gtest/mpi_unittest.cc +++ b/gtests/freebl_gtest/mpi_unittest.cc @@ -192,6 +192,39 @@ TEST_F(MPITest, MpiFixlenOctetsZero) { TestToFixedOctets(zero, sizeof(mp_digit) + 1); } +TEST_F(MPITest, MpiRadixSizeNeg) { + char* str; + mp_int a; + mp_err rv; + const char* negative_edge = + "-5400000000000000003000000002200020090919017007777777777870000090" + "00000000007500443416610000000000000000000000000000000000000000000" + "00000000000000000000000000000000000000000000000000000000075049054" + "18610000800555594485440016000031555550000000000000000220030200909" + "19017007777777700000000000000000000000000000000000000000000000000" + "00000000000500000000000000000000000000004668129841661000071000000" + "00000000000000000000000000000000000000000000000007504434166100000" + "00000000000000000000000000000000000000000000000000000000000000000" + "00000000075049054186100008005555944854400184572169555500000000000" + "0000022003020090919017007777777700000000000000000000"; + + rv = mp_init(&a); + ASSERT_EQ(MP_OKAY, rv); + rv = mp_read_variable_radix(&a, negative_edge, 10); + ASSERT_EQ(MP_OKAY, rv); + + const int radixSize = mp_radix_size(&a, 10); + ASSERT_LE(0, radixSize); + + str = (char*)malloc(radixSize); + ASSERT_NE(nullptr, str); + rv = mp_toradix(&a, str, 10); + ASSERT_EQ(MP_OKAY, rv); + ASSERT_EQ(0, strcmp(negative_edge, str)); + free(str); + mp_clear(&a); +} + TEST_F(MPITest, MpiFixlenOctetsVarlen) { std::vector<uint8_t> packed; for (size_t i = 0; i < sizeof(mp_digit) * 2; ++i) { |