@@ -2474,6 +2474,71 @@ TEST(BuiltinDataSerializationTests, deserialization_of_big_parameters)
2474
2474
}
2475
2475
}
2476
2476
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
+
2477
2542
} // namespace rtps
2478
2543
} // namespace fastdds
2479
2544
} // namespace eprosima
0 commit comments