diff --git a/Chaos/Padding/PadderIso7816.hpp b/Chaos/Padding/PadderIso7816.hpp index 113b838..221234c 100644 --- a/Chaos/Padding/PadderIso7816.hpp +++ b/Chaos/Padding/PadderIso7816.hpp @@ -4,6 +4,7 @@ #include #include "Padding/Padder.hpp" +#include "Service/ChaosException.hpp" namespace Chaos::Padding { @@ -25,6 +26,10 @@ public: *it = 0; } } + else + { + throw Service::ChaosException("PadderIso7816::Pad(): invalid range"); + } } }; diff --git a/ChaosTests/Padding/PadderIso7816Tests.cpp b/ChaosTests/Padding/PadderIso7816Tests.cpp index 606a8a1..c6ec4be 100644 --- a/ChaosTests/Padding/PadderIso7816Tests.cpp +++ b/ChaosTests/Padding/PadderIso7816Tests.cpp @@ -1,4 +1,5 @@ #include +#include "TestHelpers/AssertThrowEx.hpp" #include #include @@ -6,6 +7,7 @@ #include "Padding/PadderIso7816.hpp" #include "Padding/Padder.hpp" +#include "Service/ChaosException.hpp" using namespace Chaos::Padding; @@ -43,7 +45,7 @@ TEST(PadIso7816Tests, PadTest) ASSERT_EQ(expected, fact); } - for (int i = 0; i < 256; ++i) + for (int i = 1; i < 256; ++i) { std::vector fact(i, 0xff); @@ -56,6 +58,19 @@ TEST(PadIso7816Tests, PadTest) } } +TEST(PadIso7816Tests, PadInvalidRangeTest) +{ + { + std::array out = {}; + + ASSERT_THROW_EX(PadderIso7816::Pad(out.begin(), out.begin()), + Chaos::Service::ChaosException, + { + ASSERT_EQ("PadderIso7816::Pad(): invalid range", ex.GetMessage()); + }); + } +} + TEST(PadIso7816Tests, PadOutIteratorUsageTest) { { @@ -90,22 +105,6 @@ TEST(PadIso7816Tests, PadOutIteratorUsageTest) PadderIso7816::Pad(fact.begin() + 3, fact.end() - 3); ASSERT_EQ(expected, fact); } - - { - std::array fact = - { - 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, - 0xbb, 0xbb, 0xbb, 0xbb, 0xbb - }; - std::array expected = - { - 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, - 0xbb, 0xbb, 0xbb, 0xbb, 0xbb - }; - - PadderIso7816::Pad(fact.begin() + 5, fact.begin() + 5); - ASSERT_EQ(expected, fact); - } } template