Add UST test binaries to gitignore
[lttng-tools.git] / liblttng-ustconsumer / lttng-ustconsumer.c
index efb6be42490812d45f911b7f650254264efdc57f..8305b061a882fff9021037e1716ff32fb3f36935 100644 (file)
@@ -33,6 +33,7 @@
 #include <lttng/lttng-ustconsumer.h>
 #include <lttng/ust-ctl.h>
 #include <lttngerr.h>
+#include <runas.h>
 
 extern struct lttng_consumer_global_data consumer_data;
 extern int consumer_poll_timeout;
@@ -277,11 +278,8 @@ int lttng_ustconsumer_allocate_channel(struct lttng_consumer_channel *chan)
        if (!chan->handle) {
                return -ENOMEM;
        }
-       /*
-        * The channel fds are passed to ustctl, we only keep a copy.
-        */
-       chan->shm_fd_is_copy = 1;
        chan->wait_fd_is_copy = 1;
+       chan->shm_fd = -1;
 
        return 0;
 }
@@ -312,15 +310,14 @@ int lttng_ustconsumer_allocate_stream(struct lttng_consumer_stream *stream)
        stream->buf = ustctl_open_stream_read(stream->chan->handle, stream->cpu);
        if (!stream->buf)
                return -EBUSY;
+       /* ustctl_open_stream_read has closed the shm fd. */
+       stream->wait_fd_is_copy = 1;
+       stream->shm_fd = -1;
+
        stream->mmap_base = ustctl_get_mmap_base(stream->chan->handle, stream->buf);
        if (!stream->mmap_base) {
                return -EINVAL;
        }
-       /*
-        * The stream fds are passed to ustctl, we only keep a copy.
-        */
-       stream->shm_fd_is_copy = 1;
-       stream->wait_fd_is_copy = 1;
 
        return 0;
 }
@@ -397,19 +394,16 @@ int lttng_ustconsumer_on_recv_stream(struct lttng_consumer_stream *stream)
 
        /* Opening the tracefile in write mode */
        if (stream->path_name != NULL) {
-               ret = open(stream->path_name,
-                               O_WRONLY|O_CREAT|O_TRUNC, S_IRWXU|S_IRWXG|S_IRWXO);
+               ret = open_run_as(stream->path_name,
+                               O_WRONLY|O_CREAT|O_TRUNC,
+                               S_IRWXU|S_IRWXG|S_IRWXO,
+                               stream->uid, stream->gid);
                if (ret < 0) {
                        ERR("Opening %s", stream->path_name);
                        perror("open");
                        goto error;
                }
                stream->out_fd = ret;
-               ret = chown(stream->path_name, stream->uid, stream->gid);
-               if (ret < 0) {
-                       ERR("Changing ownership of %s", stream->path_name);
-                       perror("chown");
-               }
        }
 
        /* we return 0 to let the library handle the FD internally */
This page took 0.023325 seconds and 4 git commands to generate.