Merge branch 'master' into compat-freebsd
authorDavid Goulet <dgoulet@efficios.com>
Thu, 1 Mar 2012 18:04:18 +0000 (13:04 -0500)
committerDavid Goulet <dgoulet@efficios.com>
Thu, 1 Mar 2012 18:04:18 +0000 (13:04 -0500)
1  2 
src/bin/lttng-sessiond/main.c

index 922e81b594817b365fcffa3d8f3f1ed2adfb750f,3cb970c06e21c62c50b42a2e7466ead067a493f9..8654031f1becce5d4fa497ddba1c70b35850d25f
@@@ -17,6 -17,7 +17,6 @@@
   */
  
  #define _GNU_SOURCE
 -#include <fcntl.h>
  #include <getopt.h>
  #include <grp.h>
  #include <limits.h>
@@@ -39,7 -40,6 +39,7 @@@
  
  #include <common/common.h>
  #include <common/compat/poll.h>
 +#include <common/compat/socket.h>
  #include <common/defaults.h>
  #include <common/kernel-consumer/kernel-consumer.h>
  #include <common/ust-consumer/ust-consumer.h>
@@@ -295,22 -295,14 +295,22 @@@ static gid_t allowed_group(void
   */
  static int init_thread_quit_pipe(void)
  {
 -      int ret;
 +      int ret, i;
  
 -      ret = pipe2(thread_quit_pipe, O_CLOEXEC);
 +      ret = pipe(thread_quit_pipe);
        if (ret < 0) {
 -              perror("thread quit pipe");
 +              PERROR("thread quit pipe");
                goto error;
        }
  
 +      for (i = 0; i < 2; i++) {
 +              ret = fcntl(thread_quit_pipe[i], F_SETFD, FD_CLOEXEC);
 +              if (ret < 0) {
 +                      PERROR("fcntl");
 +                      goto error;
 +              }
 +      }
 +
  error:
        return ret;
  }
@@@ -2917,12 -2909,11 +2917,12 @@@ error
  /*
   * Command LTTNG_CREATE_SESSION processed by the client thread.
   */
 -static int cmd_create_session(char *name, char *path, struct ucred *creds)
 +static int cmd_create_session(char *name, char *path, lttng_sock_cred *creds)
  {
        int ret;
  
 -      ret = session_create(name, path, creds->uid, creds->gid);
 +      ret = session_create(name, path, LTTNG_SOCK_GET_UID_CRED(creds),
 +                      LTTNG_SOCK_GET_GID_CRED(creds));
        if (ret != LTTCOMM_OK) {
                goto error;
        }
@@@ -3348,8 -3339,7 +3348,8 @@@ skip_domain
         */
        if (need_tracing_session) {
                if (!session_access_ok(cmd_ctx->session,
 -                              cmd_ctx->creds.uid, cmd_ctx->creds.gid)) {
 +                              LTTNG_SOCK_GET_UID_CRED(&cmd_ctx->creds),
 +                              LTTNG_SOCK_GET_GID_CRED(&cmd_ctx->creds))) {
                        ret = LTTCOMM_EPERM;
                        goto error;
                }
                unsigned int nr_sessions;
  
                session_lock_list();
 -              nr_sessions = lttng_sessions_count(cmd_ctx->creds.uid, cmd_ctx->creds.gid);
 +              nr_sessions = lttng_sessions_count(
 +                              LTTNG_SOCK_GET_UID_CRED(&cmd_ctx->creds),
 +                              LTTNG_SOCK_GET_GID_CRED(&cmd_ctx->creds));
  
                ret = setup_lttng_msg(cmd_ctx, sizeof(struct lttng_session) * nr_sessions);
                if (ret < 0) {
  
                /* Filled the session array */
                list_lttng_sessions((struct lttng_session *)(cmd_ctx->llm->payload),
 -                      cmd_ctx->creds.uid, cmd_ctx->creds.gid);
 +                      LTTNG_SOCK_GET_UID_CRED(&cmd_ctx->creds),
 +                      LTTNG_SOCK_GET_GID_CRED(&cmd_ctx->creds));
  
                session_unlock_list();
  
@@@ -4011,7 -3998,7 +4011,7 @@@ static int set_permissions(char *rundir
        }
  
        /* Ensure tracing group can search the run dir */
-       ret = chmod(rundir, S_IRWXU | S_IXGRP);
+       ret = chmod(rundir, S_IRWXU | S_IXGRP | S_IXOTH);
        if (ret < 0) {
                ERR("Unable to set permissions on %s", rundir);
                perror("chmod");
   */
  static int create_kernel_poll_pipe(void)
  {
 -      return pipe2(kernel_poll_pipe, O_CLOEXEC);
 +      int ret, i;
 +
 +      ret = pipe(kernel_poll_pipe);
 +      if (ret < 0) {
 +              PERROR("kernel poll pipe");
 +              goto error;
 +      }
 +
 +      for (i = 0; i < 2; i++) {
 +              ret = fcntl(kernel_poll_pipe[i], F_SETFD, FD_CLOEXEC);
 +              if (ret < 0) {
 +                      PERROR("fcntl kernel_poll_pipe");
 +                      goto error;
 +              }
 +      }
 +
 +error:
 +      return ret;
  }
  
  /*
   */
  static int create_apps_cmd_pipe(void)
  {
 -      return pipe2(apps_cmd_pipe, O_CLOEXEC);
 +      int ret, i;
 +
 +      ret = pipe(apps_cmd_pipe);
 +      if (ret < 0) {
 +              PERROR("apps cmd pipe");
 +              goto error;
 +      }
 +
 +      for (i = 0; i < 2; i++) {
 +              ret = fcntl(apps_cmd_pipe[i], F_SETFD, FD_CLOEXEC);
 +              if (ret < 0) {
 +                      PERROR("fcntl apps_cmd_pipe");
 +                      goto error;
 +              }
 +      }
 +
 +error:
 +      return ret;
  }
  
  /*
This page took 0.040656 seconds and 4 git commands to generate.