Do not silently ignore security QoS settings
When built without support for DDS Security, any attempt to create a participant QoS settings in the security name space (those prefixed by "dds.sec.") must fail. Signed-off-by: Erik Boasson <eb@ilities.com>
This commit is contained in:
parent
4fe9cf290d
commit
d4e9300dad
6 changed files with 226 additions and 156 deletions
|
@ -141,3 +141,43 @@ CU_Test(ddsc_security_config, empty, .init = ddsrt_init, .fini = ddsrt_fini)
|
|||
CU_ASSERT_FATAL(found == 0x7);
|
||||
#endif
|
||||
}
|
||||
|
||||
CU_Test(ddsc_security_qos, empty, .init = ddsrt_init, .fini = ddsrt_fini)
|
||||
{
|
||||
/* Expected traces when creating participant with some (not all) security QoS
|
||||
settings. We need to test this one here to be sure that it also refuses to
|
||||
start when security is configured but the implementation doesn't include
|
||||
support for it. */
|
||||
const char *log_expected[] = {
|
||||
#ifdef DDSI_INCLUDE_SECURITY
|
||||
"new_participant(*): using security settings from QoS*",
|
||||
"new_participant(*): required security property * missing*",
|
||||
#endif
|
||||
NULL
|
||||
};
|
||||
|
||||
/* Set up the trace sinks to detect the config parsing. */
|
||||
dds_set_log_mask (DDS_LC_FATAL|DDS_LC_ERROR|DDS_LC_WARNING|DDS_LC_CONFIG);
|
||||
dds_set_log_sink (&logger, (void *) log_expected);
|
||||
dds_set_trace_sink (&logger, (void *) log_expected);
|
||||
|
||||
/* Create participant with incomplete/nonsensical security configuration: this should always fail */
|
||||
found = 0;
|
||||
dds_qos_t *qos = dds_create_qos ();
|
||||
dds_qset_prop (qos, "dds.sec.nonsense", "");
|
||||
dds_entity_t domain = dds_create_domain (0, "<Tracing><Category>trace</Category>");
|
||||
CU_ASSERT_FATAL (domain > 0);
|
||||
dds_entity_t participant = dds_create_participant (0, qos, NULL);
|
||||
dds_delete_qos (qos);
|
||||
CU_ASSERT_FATAL (participant < 0);
|
||||
(void) dds_delete (domain);
|
||||
dds_set_log_sink (NULL, NULL);
|
||||
dds_set_trace_sink (NULL, NULL);
|
||||
|
||||
/* All traces should have been provided. */
|
||||
#ifndef DDSI_INCLUDE_SECURITY
|
||||
CU_ASSERT_FATAL (found == 0x0);
|
||||
#else
|
||||
CU_ASSERT_FATAL (found == 0x3);
|
||||
#endif
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue