X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Fconfig%2Fconfig.c;h=0366f5a87b317d4ed5bf813517fdfb4e1e978018;hb=9e7c9f56fd5089269e5af3d7e79f43cf6f87285d;hp=86b1be8b5c41c218cc2f6252188410e2ce2a741e;hpb=c8c5f7ce6289e7090883066f40b53291e8ac503e;p=lttng-tools.git diff --git a/src/common/config/config.c b/src/common/config/config.c index 86b1be8b5..0366f5a87 100644 --- a/src/common/config/config.c +++ b/src/common/config/config.c @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -114,6 +115,9 @@ const char * const config_element_net_output = "net_output"; const char * const config_element_control_uri = "control_uri"; const char * const config_element_data_uri = "data_uri"; const char * const config_element_max_size = "max_size"; +const char * const config_element_pid = "pid"; +const char * const config_element_pids = "pids"; +const char * const config_element_shared_memory_path = "shared_memory_path"; const char * const config_domain_type_kernel = "KERNEL"; const char * const config_domain_type_ust = "UST"; @@ -595,7 +599,7 @@ static char *get_session_config_xsd_path() { char *xsd_path; - const char *base_path = getenv(DEFAULT_SESSION_CONFIG_XSD_PATH_ENV); + const char *base_path = lttng_secure_getenv(DEFAULT_SESSION_CONFIG_XSD_PATH_ENV); size_t base_path_len; size_t max_path_len; @@ -2169,6 +2173,7 @@ int process_session_node(xmlNodePtr session_node, const char *session_name, int ret, started = -1, snapshot_mode = -1; uint64_t live_timer_interval = UINT64_MAX; char *name = NULL; + xmlChar *shm_path = NULL; xmlNodePtr domains_node = NULL; xmlNodePtr output_node = NULL; xmlNodePtr node; @@ -2213,6 +2218,16 @@ int process_session_node(xmlNodePtr session_node, const char *session_name, config_element_output)) { /* output */ output_node = node; + } else if (!shm_path && !strcmp((const char *) node->name, + config_element_shared_memory_path)) { + /* shared memory path */ + xmlChar *node_content = xmlNodeGetContent(node); + if (!node_content) { + ret = -LTTNG_ERR_NOMEM; + goto error; + } + + shm_path = node_content; } else { /* attributes, snapshot_mode or live_timer_interval */ xmlNodePtr attributes_child = @@ -2353,6 +2368,14 @@ domain_init_error: goto error; } + if (shm_path) { + ret = lttng_set_session_shm_path((const char *) name, + (const char *) shm_path); + if (ret) { + goto error; + } + } + for (node = xmlFirstElementChild(domains_node); node; node = xmlNextElementSibling(node)) { ret = process_domain_node(node, name); @@ -2381,6 +2404,7 @@ error: free(log4j_domain); free(python_domain); free(name); + xmlFree(shm_path); return ret; }