Skip to content

Commit 003d31a

Browse files
MiguelCompanymergify[bot]
authored andcommitted
Fix comparison in is_update_allowed (#5414)
* Refs #19927. Add unit test. Signed-off-by: Miguel Company <[email protected]> * Refs #19927. Fix issue in ReaderProxyData. Signed-off-by: Miguel Company <[email protected]> * Refs #19927. Fix issue in WriterProxyData. Signed-off-by: Miguel Company <[email protected]> --------- Signed-off-by: Miguel Company <[email protected]> (cherry picked from commit 6b74b0d)
1 parent 2364da6 commit 003d31a

File tree

3 files changed

+67
-2
lines changed

3 files changed

+67
-2
lines changed

src/cpp/rtps/builtin/data/ReaderProxyData.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1196,7 +1196,7 @@ bool ReaderProxyData::is_update_allowed(
11961196
if ((m_guid != rdata.m_guid) ||
11971197
#if HAVE_SECURITY
11981198
(security_attributes_ != rdata.security_attributes_) ||
1199-
(plugin_security_attributes_ != rdata.security_attributes_) ||
1199+
(plugin_security_attributes_ != rdata.plugin_security_attributes_) ||
12001200
#endif // if HAVE_SECURITY
12011201
(m_typeName != rdata.m_typeName) ||
12021202
(m_topicName != rdata.m_topicName))

src/cpp/rtps/builtin/data/WriterProxyData.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1208,7 +1208,7 @@ bool WriterProxyData::is_update_allowed(
12081208
(persistence_guid_ != wdata.persistence_guid_) ||
12091209
#if HAVE_SECURITY
12101210
(security_attributes_ != wdata.security_attributes_) ||
1211-
(plugin_security_attributes_ != wdata.security_attributes_) ||
1211+
(plugin_security_attributes_ != wdata.plugin_security_attributes_) ||
12121212
#endif // if HAVE_SECURITY
12131213
(m_typeName != wdata.m_typeName) ||
12141214
(m_topicName != wdata.m_topicName))

test/unittest/rtps/builtin/BuiltinDataSerializationTests.cpp

+65
Original file line numberDiff line numberDiff line change
@@ -2474,6 +2474,71 @@ TEST(BuiltinDataSerializationTests, deserialization_of_big_parameters)
24742474
}
24752475
}
24762476

2477+
/*!
2478+
* This is a regression test for redmine issue #19927
2479+
*
2480+
* It checks that proxy data for readers and writers can only be updated if the security attributes are equal.
2481+
*/
2482+
TEST(BuiltinDataSerializationTests, security_attributes_update)
2483+
{
2484+
// Only if security is enabled
2485+
#if HAVE_SECURITY
2486+
2487+
// Test for ReaderProxyData
2488+
{
2489+
ReaderProxyData original(max_unicast_locators, max_multicast_locators);
2490+
original.security_attributes_ = 0x01;
2491+
original.plugin_security_attributes_ = 0x02;
2492+
2493+
ReaderProxyData updated(original);
2494+
EXPECT_TRUE(original.is_update_allowed(updated));
2495+
2496+
updated.security_attributes_ = original.security_attributes_ + 10;
2497+
updated.plugin_security_attributes_ = original.plugin_security_attributes_;
2498+
EXPECT_FALSE(original.is_update_allowed(updated));
2499+
2500+
updated.security_attributes_ = original.security_attributes_;
2501+
updated.plugin_security_attributes_ = original.plugin_security_attributes_ + 10;
2502+
EXPECT_FALSE(original.is_update_allowed(updated));
2503+
2504+
updated.security_attributes_ = original.plugin_security_attributes_;
2505+
updated.plugin_security_attributes_ = original.plugin_security_attributes_;
2506+
EXPECT_FALSE(original.is_update_allowed(updated));
2507+
2508+
updated.security_attributes_ = original.security_attributes_;
2509+
updated.plugin_security_attributes_ = original.security_attributes_;
2510+
EXPECT_FALSE(original.is_update_allowed(updated));
2511+
}
2512+
2513+
// Test for WriterProxyData
2514+
{
2515+
WriterProxyData original(max_unicast_locators, max_multicast_locators);
2516+
original.security_attributes_ = 0x01;
2517+
original.plugin_security_attributes_ = 0x02;
2518+
2519+
WriterProxyData updated(original);
2520+
EXPECT_TRUE(original.is_update_allowed(updated));
2521+
2522+
updated.security_attributes_ = original.security_attributes_ + 10;
2523+
updated.plugin_security_attributes_ = original.plugin_security_attributes_;
2524+
EXPECT_FALSE(original.is_update_allowed(updated));
2525+
2526+
updated.security_attributes_ = original.security_attributes_;
2527+
updated.plugin_security_attributes_ = original.plugin_security_attributes_ + 10;
2528+
EXPECT_FALSE(original.is_update_allowed(updated));
2529+
2530+
updated.security_attributes_ = original.plugin_security_attributes_;
2531+
updated.plugin_security_attributes_ = original.plugin_security_attributes_;
2532+
EXPECT_FALSE(original.is_update_allowed(updated));
2533+
2534+
updated.security_attributes_ = original.security_attributes_;
2535+
updated.plugin_security_attributes_ = original.security_attributes_;
2536+
EXPECT_FALSE(original.is_update_allowed(updated));
2537+
}
2538+
2539+
#endif // HAVE_SECURITY
2540+
}
2541+
24772542
} // namespace rtps
24782543
} // namespace fastdds
24792544
} // namespace eprosima

0 commit comments

Comments
 (0)