@@ -2364,6 +2364,71 @@ TEST(BuiltinDataSerializationTests, deserialization_of_big_parameters)
2364
2364
}
2365
2365
}
2366
2366
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
+
2367
2432
} // namespace rtps
2368
2433
} // namespace fastrtps
2369
2434
} // namespace eprosima
0 commit comments