Revert "logger: add --no-drop-privileges" and partially "logger: set starting credent... 12/167612/2
authorKarol Lewandowski <k.lewandowsk@samsung.com>
Thu, 18 Jan 2018 15:40:10 +0000 (16:40 +0100)
committerKarol Lewandowski <k.lewandowsk@samsung.com>
Fri, 19 Jan 2018 09:42:18 +0000 (10:42 +0100)
This reverts commit 4ab20e23751ab0da5abbeee8be338844139c05c6.

Additionally, it reverts parts of 0fc4cf8f874c3ace41f9b5de4e0347a8c738ef43,
which added --no-drop-privileges flag.  This is done once to avoid
dlog_server failing to start .

Change-Id: I1050f24b1f001e2667f030e375eaf55a3ec8c714

configs/dlog_logger.service.in
src/logger/logger.c

index 6b7555f..6630dae 100644 (file)
@@ -14,7 +14,7 @@ User=@DLOG_SERVER_USER@
 Group=@DLOG_SERVER_GROUP@
 Environment=TZ=:/etc/localtime
 SmackProcessLabel=System
-ExecStart=/usr/bin/dlog_logger -b 99 -t 600 --no-drop-privileges
+ExecStart=/usr/bin/dlog_logger -b 99 -t 600
 Capabilities=cap_syslog=i
 SecureBits=keep-caps
 Restart=always
index bc99d72..2aa4a0b 100755 (executable)
@@ -28,8 +28,6 @@
 #include <pwd.h>
 #include <grp.h>
 #include <assert.h>
-#include <getopt.h>
-#include <stdbool.h>
 
 #include <linux/limits.h>
 #include <sys/epoll.h>
@@ -195,7 +193,6 @@ struct logger {
 
 struct socket_config_data {
        int permissions;
-       bool should_chown;
        char path[MAX_CONF_VAL_LEN];
        char owner[MAX_CONF_VAL_LEN];
        char group[MAX_CONF_VAL_LEN];
@@ -209,7 +206,6 @@ struct buffer_config_data {
 
 struct logger_config_data {
        struct buf_params buf_params;
-       bool drop_privileges;
        list_head logfile_configs;
        int is_buffer_enabled[LOG_ID_MAX];
        struct buffer_config_data buffers[LOG_ID_MAX];
@@ -227,7 +223,7 @@ static void dispatch_event_sock(struct logger *server, struct epoll_event *event
 static void dispatch_event_reader(struct logger *server, struct epoll_event *event);
 static void reader_free(struct reader* reader);
 static void logger_free(struct logger* l);
-static int parse_args(int argc, char **argv, struct logger_config_data *l);
+static int parse_args(int argc, char **argv, struct buf_params *b);
 static int socket_initialize(struct sock_data *sock, struct log_buffer *buffer, service_socket_t service_socket, struct socket_config_data *data);
 static void help();
 
@@ -1765,12 +1761,10 @@ static int socket_initialize(struct sock_data *sock, struct log_buffer *buffer,
        if (sock_fd < 0)
                return sock_fd;
 
-       if (data->should_chown) {
-               int r = change_owners(data->path, data->owner, data->group);
-               if (r < 0) {
-                       close(sock_fd);
-                       return r;
-               }
+       int r = change_owners(data->path, data->owner, data->group);
+       if (r < 0) {
+               close(sock_fd);
+               return r;
        }
 
        init_fd_entity(&sock->fd_entity, dispatch_event_sock, sock);
@@ -1974,10 +1968,9 @@ static int do_logger(struct logger* server)
  * @param[out] data Socket init config data
  * @param[in] buf_name The name of the buffer the socket belongs to
  * @param[in] type The name of the buffer type
- * @param[in] should_chown Whether the socket should change owner
  * @return 0 on success, -errno on failure
  */
-int prepare_socket_data(struct log_config *conf, struct socket_config_data *data, char *buf_name, const char *type, bool should_chown)
+int prepare_socket_data(struct log_config *conf, struct socket_config_data *data, char *buf_name, const char *type)
 {
        char conf_key[MAX_CONF_KEY_LEN];
        int r;
@@ -2015,7 +2008,6 @@ int prepare_socket_data(struct log_config *conf, struct socket_config_data *data
        strncpy(data->path,  path,  MAX_CONF_VAL_LEN - 1);
        strncpy(data->owner, owner, MAX_CONF_VAL_LEN - 1);
        strncpy(data->group, group, MAX_CONF_VAL_LEN - 1);
-       data->should_chown = should_chown;
 
        return 0;
 }
@@ -2026,21 +2018,20 @@ int prepare_socket_data(struct log_config *conf, struct socket_config_data *data
  * @param[in] conf Config database
  * @param[out] data Buffer init config data
  * @param[in] buf_id Index of the buffer to work with
- * @param[in] should_sockets_chown Whether sockets belonging to the buffer should change owner
  * @return 0 on success, -errno on failure
  */
-int prepare_buffer_data(struct log_config *conf, struct buffer_config_data *data, log_id_t buf_id, bool should_sockets_chown)
+int prepare_buffer_data(struct log_config *conf, struct buffer_config_data *data, log_id_t buf_id)
 {
        char * const buf_name = log_name_by_id(buf_id);
        char * validity_check_ptr;
        char conf_key[MAX_CONF_KEY_LEN];
        int r;
 
-       r = prepare_socket_data(conf, &data->write_socket, buf_name, "write", should_sockets_chown);
+       r = prepare_socket_data(conf, &data->write_socket, buf_name, "write");
        if (r < 0)
                return r;
 
-       r = prepare_socket_data(conf, &data->ctl_socket, buf_name, "ctl", should_sockets_chown);
+       r = prepare_socket_data(conf, &data->ctl_socket, buf_name, "ctl");
        if (r < 0)
                return r;
 
@@ -2097,7 +2088,7 @@ int prepare_config_data(struct logger_config_data *data, int argc, char **argv)
 
        memset(data, 0, sizeof *data);
 
-       int ret = parse_args(argc, argv, data);
+       int ret = parse_args(argc, argv, &data->buf_params);
        if (ret != 0) {
                help();
                return ret;
@@ -2139,7 +2130,7 @@ int prepare_config_data(struct logger_config_data *data, int argc, char **argv)
 
        for (log_id_t buf_id = 0; buf_id < LOG_ID_MAX; ++buf_id) {
                if (data->is_buffer_enabled[buf_id]) {
-                       ret = prepare_buffer_data(&conf, data->buffers + buf_id, buf_id, data->drop_privileges);
+                       ret = prepare_buffer_data(&conf, data->buffers + buf_id, buf_id);
                        if (ret < 0)
                                goto end;
                }
@@ -2181,29 +2172,18 @@ static void help()
  * @details Parses execution parameters of the program
  * @param[in] argc Argument count
  * @param[in] argv Argument values
- * @param[out] l Configuration for the logger server
+ * @param[out] b Buffering parameters
  * @return 0 or 1 on success, else -errno. Nonzero if the program is to close.
  */
-static int parse_args(int argc, char **argv, struct logger_config_data *l)
+static int parse_args(int argc, char **argv, struct buf_params *b)
 {
-       assert(l);
-
        int option;
-       struct buf_params *const b = &l->buf_params;
 
-       l->drop_privileges = true;
        b->time = BUF_PARAM_TIME_DEFAULT;
        b->bytes = BUF_PARAM_BYTES_DEFAULT;
 
-       static const struct option long_options[] = {
-               {"no-drop-privileges", no_argument, NULL, 0},
-               {0}
-       };
-       while ((option = getopt_long(argc, argv, "hb:t:", long_options, NULL)) != -1) {
+       while ((option = getopt(argc, argv, "hb:t:")) != -1) {
                switch (option) {
-               case 0:
-                       l->drop_privileges = false;
-                       break;
                case 't':
                        if (!isdigit(optarg[0]))
                                return -EINVAL;
@@ -2263,11 +2243,9 @@ static int finalize_init(struct logger_config_data *data, struct logger *server)
 {
        sd_notify(0, "READY=1");
 
-       if (data->drop_privileges) {
-               int r = reset_self_privileges();
-               if (r < 0)
-                       return r;
-       }
+       int r = reset_self_privileges();
+       if (r < 0)
+               return r;
 
        //create files after resetting self privileges
        list_foreach(data->logfile_configs, server, parse_logfile_config);