Skip to content

Commit 6b74b0d

Browse files
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]>
1 parent cba109a commit 6b74b0d

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
@@ -1205,7 +1205,7 @@ bool ReaderProxyData::is_update_allowed(
12051205
if ((m_guid != rdata.m_guid) ||
12061206
#if HAVE_SECURITY
12071207
(security_attributes_ != rdata.security_attributes_) ||
1208-
(plugin_security_attributes_ != rdata.security_attributes_) ||
1208+
(plugin_security_attributes_ != rdata.plugin_security_attributes_) ||
12091209
#endif // if HAVE_SECURITY
12101210
(m_typeName != rdata.m_typeName) ||
12111211
(m_topicName != rdata.m_topicName))

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -1217,7 +1217,7 @@ bool WriterProxyData::is_update_allowed(
12171217
(persistence_guid_ != wdata.persistence_guid_) ||
12181218
#if HAVE_SECURITY
12191219
(security_attributes_ != wdata.security_attributes_) ||
1220-
(plugin_security_attributes_ != wdata.security_attributes_) ||
1220+
(plugin_security_attributes_ != wdata.plugin_security_attributes_) ||
12211221
#endif // if HAVE_SECURITY
12221222
(m_typeName != wdata.m_typeName) ||
12231223
(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)