Truncate exclusion names to have a terminal '\0'
[lttng-tools.git] / src / bin / lttng-sessiond / ust-registry.c
index f9ddd25a5928e197d15834446fa9710ec665a44b..71fdc4fd8294d48c8f335222b2af2381cb1972e0 100644 (file)
@@ -14,7 +14,7 @@
  * this program; if not, write to the Free Software Foundation, Inc., 51
  * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
-#define _GNU_SOURCE
+
 #define _LGPL_SOURCE
 #include <assert.h>
 #include <inttypes.h>
@@ -43,13 +43,13 @@ static int ht_match_event(struct cds_lfht_node *node, const void *_key)
        key = _key;
 
        /* It has to be a perfect match. */
-       if (strncmp(event->name, key->name, sizeof(event->name)) != 0) {
+       if (strncmp(event->name, key->name, sizeof(event->name))) {
                goto no_match;
        }
 
        /* It has to be a perfect match. */
        if (strncmp(event->signature, key->signature,
-                               strlen(event->signature) != 0)) {
+                       strlen(event->signature))) {
                goto no_match;
        }
 
@@ -133,8 +133,8 @@ int validate_event_fields(size_t nr_fields, struct ustctl_field *fields,
  */
 static struct ust_registry_event *alloc_event(int session_objd,
                int channel_objd, char *name, char *sig, size_t nr_fields,
-               struct ustctl_field *fields, int loglevel, char *model_emf_uri,
-               struct ust_app *app)
+               struct ustctl_field *fields, int loglevel_value,
+               char *model_emf_uri, struct ust_app *app)
 {
        struct ust_registry_event *event = NULL;
 
@@ -157,7 +157,7 @@ static struct ust_registry_event *alloc_event(int session_objd,
        event->signature = sig;
        event->nr_fields = nr_fields;
        event->fields = fields;
-       event->loglevel = loglevel;
+       event->loglevel_value = loglevel_value;
        event->model_emf_uri = model_emf_uri;
        if (name) {
                /* Copy event name and force NULL byte. */
@@ -248,9 +248,9 @@ end:
  */
 int ust_registry_create_event(struct ust_registry_session *session,
                uint64_t chan_key, int session_objd, int channel_objd, char *name,
-               char *sig, size_t nr_fields, struct ustctl_field *fields, int loglevel,
-               char *model_emf_uri, int buffer_type, uint32_t *event_id_p,
-               struct ust_app *app)
+               char *sig, size_t nr_fields, struct ustctl_field *fields,
+               int loglevel_value, char *model_emf_uri, int buffer_type,
+               uint32_t *event_id_p, struct ust_app *app)
 {
        int ret;
        uint32_t event_id;
@@ -287,7 +287,7 @@ int ust_registry_create_event(struct ust_registry_session *session,
        }
 
        event = alloc_event(session_objd, channel_objd, name, sig, nr_fields,
-                       fields, loglevel, model_emf_uri, app);
+                       fields, loglevel_value, model_emf_uri, app);
        if (!event) {
                ret = -ENOMEM;
                goto error_free;
@@ -572,6 +572,8 @@ int ust_registry_session_init(struct ust_registry_session **sessionp,
        session->long_alignment = long_alignment;
        session->byte_order = byte_order;
        session->metadata_fd = -1;
+       session->uid = euid;
+       session->gid = egid;
        strncpy(session->root_shm_path, root_shm_path,
                sizeof(session->root_shm_path));
        session->root_shm_path[sizeof(session->root_shm_path) - 1] = '\0';
@@ -597,9 +599,9 @@ int ust_registry_session_init(struct ust_registry_session **sessionp,
        }
        if (session->metadata_path[0]) {
                /* Create metadata file */
-               ret = open(session->metadata_path,
+               ret = run_as_open(session->metadata_path,
                        O_WRONLY | O_CREAT | O_EXCL,
-                       S_IRUSR | S_IWUSR);
+                       S_IRUSR | S_IWUSR, euid, egid);
                if (ret < 0) {
                        PERROR("Opening metadata file");
                        goto error;
@@ -675,7 +677,8 @@ void ust_registry_session_destroy(struct ust_registry_session *reg)
                if (ret) {
                        PERROR("close");
                }
-               ret = unlink(reg->metadata_path);
+               ret = run_as_unlink(reg->metadata_path,
+                               reg->uid, reg->gid);
                if (ret) {
                        PERROR("unlink");
                }
@@ -684,6 +687,7 @@ void ust_registry_session_destroy(struct ust_registry_session *reg)
                /*
                 * Try deleting the directory hierarchy.
                 */
-               (void) utils_recursive_rmdir(reg->root_shm_path);
+               (void) run_as_recursive_rmdir(reg->root_shm_path,
+                               reg->uid, reg->gid);
        }
 }
This page took 0.024439 seconds and 4 git commands to generate.