Skip to content

Commit 60fcd9f

Browse files
MiguelCompanyEugenioCollado
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 3b0c821 commit 60fcd9f

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
@@ -1187,7 +1187,7 @@ bool ReaderProxyData::is_update_allowed(
11871187
if ((m_guid != rdata.m_guid) ||
11881188
#if HAVE_SECURITY
11891189
(security_attributes_ != rdata.security_attributes_) ||
1190-
(plugin_security_attributes_ != rdata.security_attributes_) ||
1190+
(plugin_security_attributes_ != rdata.plugin_security_attributes_) ||
11911191
#endif // if HAVE_SECURITY
11921192
(m_typeName != rdata.m_typeName) ||
11931193
(m_topicName != rdata.m_topicName))

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -1222,7 +1222,7 @@ bool WriterProxyData::is_update_allowed(
12221222
(persistence_guid_ != wdata.persistence_guid_) ||
12231223
#if HAVE_SECURITY
12241224
(security_attributes_ != wdata.security_attributes_) ||
1225-
(plugin_security_attributes_ != wdata.security_attributes_) ||
1225+
(plugin_security_attributes_ != wdata.plugin_security_attributes_) ||
12261226
#endif // if HAVE_SECURITY
12271227
(m_typeName != wdata.m_typeName) ||
12281228
(m_topicName != wdata.m_topicName))

test/unittest/rtps/builtin/BuiltinDataSerializationTests.cpp

+65
Original file line numberDiff line numberDiff line change
@@ -2364,6 +2364,71 @@ TEST(BuiltinDataSerializationTests, deserialization_of_big_parameters)
23642364
}
23652365
}
23662366

2367+
/*!
2368+
* This is a regression test for redmine issue #19927
2369+
*
2370+
* It checks that proxy data for readers and writers can only be updated if the security attributes are equal.
2371+
*/
2372+
TEST(BuiltinDataSerializationTests, security_attributes_update)
2373+
{
2374+
// Only if security is enabled
2375+
#if HAVE_SECURITY
2376+
2377+
// Test for ReaderProxyData
2378+
{
2379+
ReaderProxyData original(max_unicast_locators, max_multicast_locators);
2380+
original.security_attributes_ = 0x01;
2381+
original.plugin_security_attributes_ = 0x02;
2382+
2383+
ReaderProxyData updated(original);
2384+
EXPECT_TRUE(original.is_update_allowed(updated));
2385+
2386+
updated.security_attributes_ = original.security_attributes_ + 10;
2387+
updated.plugin_security_attributes_ = original.plugin_security_attributes_;
2388+
EXPECT_FALSE(original.is_update_allowed(updated));
2389+
2390+
updated.security_attributes_ = original.security_attributes_;
2391+
updated.plugin_security_attributes_ = original.plugin_security_attributes_ + 10;
2392+
EXPECT_FALSE(original.is_update_allowed(updated));
2393+
2394+
updated.security_attributes_ = original.plugin_security_attributes_;
2395+
updated.plugin_security_attributes_ = original.plugin_security_attributes_;
2396+
EXPECT_FALSE(original.is_update_allowed(updated));
2397+
2398+
updated.security_attributes_ = original.security_attributes_;
2399+
updated.plugin_security_attributes_ = original.security_attributes_;
2400+
EXPECT_FALSE(original.is_update_allowed(updated));
2401+
}
2402+
2403+
// Test for WriterProxyData
2404+
{
2405+
WriterProxyData original(max_unicast_locators, max_multicast_locators);
2406+
original.security_attributes_ = 0x01;
2407+
original.plugin_security_attributes_ = 0x02;
2408+
2409+
WriterProxyData updated(original);
2410+
EXPECT_TRUE(original.is_update_allowed(updated));
2411+
2412+
updated.security_attributes_ = original.security_attributes_ + 10;
2413+
updated.plugin_security_attributes_ = original.plugin_security_attributes_;
2414+
EXPECT_FALSE(original.is_update_allowed(updated));
2415+
2416+
updated.security_attributes_ = original.security_attributes_;
2417+
updated.plugin_security_attributes_ = original.plugin_security_attributes_ + 10;
2418+
EXPECT_FALSE(original.is_update_allowed(updated));
2419+
2420+
updated.security_attributes_ = original.plugin_security_attributes_;
2421+
updated.plugin_security_attributes_ = original.plugin_security_attributes_;
2422+
EXPECT_FALSE(original.is_update_allowed(updated));
2423+
2424+
updated.security_attributes_ = original.security_attributes_;
2425+
updated.plugin_security_attributes_ = original.security_attributes_;
2426+
EXPECT_FALSE(original.is_update_allowed(updated));
2427+
}
2428+
2429+
#endif // HAVE_SECURITY
2430+
}
2431+
23672432
} // namespace rtps
23682433
} // namespace fastrtps
23692434
} // namespace eprosima

0 commit comments

Comments
 (0)