Implement run_as wrappers for mkdir/mkdir_recursive/open
[lttng-tools.git] / lttng-sessiond / ust-app.c
index 1b5d6fbf136ff4c29cf133a41ce9b945eee64868..09989ff49ea7af21f1cb116d62923e193043e2cb 100644 (file)
@@ -34,6 +34,7 @@
 #include "ust-app.h"
 #include "ust-consumer.h"
 #include "ust-ctl.h"
+#include "utils.h"
 
 /*
  * Delete ust context safely. RCU read lock must be held before calling
@@ -770,6 +771,8 @@ static void shadow_copy_session(struct ust_app_session *ua_sess,
        DBG2("Shadow copy of session handle %d", ua_sess->handle);
 
        ua_sess->id = usess->id;
+       ua_sess->uid = usess->uid;
+       ua_sess->gid = usess->gid;
 
        ret = snprintf(ua_sess->path, PATH_MAX,
                        "%s/%s-%d-%s",
@@ -1165,7 +1168,6 @@ static int create_ust_app_metadata(struct ust_app_session *ua_sess,
                char *pathname, struct ust_app *app)
 {
        int ret = 0;
-       mode_t old_umask;
 
        if (ua_sess->metadata == NULL) {
                /* Allocate UST metadata */
@@ -1191,13 +1193,12 @@ static int create_ust_app_metadata(struct ust_app_session *ua_sess,
                        goto error;
                }
 
-               old_umask = umask(0);
-               ret = mkdir(ua_sess->path, S_IRWXU | S_IRWXG);
+               ret = mkdir_run_as(ua_sess->path, S_IRWXU | S_IRWXG,
+                               ua_sess->uid, ua_sess->gid);
                if (ret < 0) {
                        PERROR("mkdir UST metadata");
                        goto error;
                }
-               umask(old_umask);
 
                ret = snprintf(ua_sess->metadata->pathname, PATH_MAX,
                                "%s/metadata", ua_sess->path);
This page took 0.02436 seconds and 4 git commands to generate.