interest: prevent InterestLifetime overflow
Refs: #4997
Change-Id: Ic116e4d6d681ab89c655774a90d9d652db4a8916
diff --git a/tests/unit/interest.t.cpp b/tests/unit/interest.t.cpp
index 4c540b7..5e64fb1 100644
--- a/tests/unit/interest.t.cpp
+++ b/tests/unit/interest.t.cpp
@@ -611,6 +611,23 @@
[] (const auto& e) { return e.what() == "Nonce element is malformed"sv; });
}
+BOOST_AUTO_TEST_CASE(LargeLifetime,
+ * ut::description("test for bug #4997"))
+{
+ i.wireDecode("050F 0703(080149) 0C087FFFFFFFFFFFFFFF"_block);
+ BOOST_CHECK_EQUAL(i.getInterestLifetime(), 0x7FFFFFFFFFFFFFFF_ms);
+
+ i.wireDecode("050F 0703(080149) 0C088000000000000000"_block);
+ BOOST_CHECK_EQUAL(i.getInterestLifetime(), time::milliseconds::max());
+
+ i.wireDecode("050F 0703(080149) 0C08FFFFFFFFFFFFFFFF"_block);
+ BOOST_CHECK_EQUAL(i.getInterestLifetime(), time::milliseconds::max());
+
+ // force re-encoding
+ i.setNonce(0x957c6554);
+ BOOST_CHECK_EQUAL(i.wireEncode(), "0515 0703(080149) 0A04957C6554 0C08FFFFFFFFFFFFFFFF"_block);
+}
+
BOOST_AUTO_TEST_CASE(BadHopLimit)
{
BOOST_CHECK_EXCEPTION(i.wireDecode("0507 0703080149 2200"_block), tlv::Error,
diff --git a/tests/unit/meta-info.t.cpp b/tests/unit/meta-info.t.cpp
index f375607..b9bb0df 100644
--- a/tests/unit/meta-info.t.cpp
+++ b/tests/unit/meta-info.t.cpp
@@ -78,9 +78,9 @@
BOOST_CHECK_EQUAL(b.wireEncode(), wire3);
}
-BOOST_AUTO_TEST_CASE(FreshnessPeriodOverflow)
+BOOST_AUTO_TEST_CASE(FreshnessPeriodOverflow,
+ * ut::description("test for bug #4997"))
{
- // Bug #4997
MetaInfo mi0("140A 19087FFFFFFFFFFFFFFF"_block);
BOOST_CHECK_EQUAL(mi0.getFreshnessPeriod(), 0x7FFFFFFFFFFFFFFF_ms);
@@ -89,6 +89,10 @@
MetaInfo mi2("140A 1908FFFFFFFFFFFFFFFF"_block);
BOOST_CHECK_EQUAL(mi2.getFreshnessPeriod(), time::milliseconds::max());
+
+ // force re-encoding
+ mi2.setType(tlv::ContentType_Key);
+ BOOST_CHECK_EQUAL(mi2.wireEncode(), "140D 180102 1908FFFFFFFFFFFFFFFF"_block);
}
BOOST_AUTO_TEST_CASE(AppMetaInfo)