Fix miscellaneous SVACE issues 59/199459/1
authorMichal Bloch <m.bloch@samsung.com>
Mon, 11 Feb 2019 12:55:39 +0000 (13:55 +0100)
committerMichal Bloch <m.bloch@samsung.com>
Mon, 11 Feb 2019 13:50:27 +0000 (14:50 +0100)
Change-Id: Iefc042ccffa7114d96a2d796d23d74e7e27d2315
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
src/logger/logger.c
src/logutil/fd_info.c
src/logutil/logutil.c
src/shared/logprint.c

index 498cbb4..127f405 100644 (file)
@@ -822,7 +822,8 @@ static void check_if_fd_limit_reached(struct logger *server, int err)
                "DLOG",
                "\x1b[31m DLOG DAEMON FD LIMIT REACHED \x1b[0m" // make it stand out
        );
-       buffer_append(&entry.header, buf);
+       if (buffer_append(&entry.header, buf))
+               printf("ERROR: not enough memory either, please check platform settings as the daemon is seriously resource-starved!\n");
 }
 
 static int reader_print_out_single_log(struct reader *reader, const struct logger_entry *logger_entry)
@@ -1300,8 +1301,11 @@ cleanup:
        optopt = 0;
 
        if (retval) {
-               if (wr)
-                       send_dlog_reply(wr->fd_entity.fd, DLOG_REQ_HANDLE_LOGUTIL, DLOG_REQ_RESULT_ERR, NULL, 0);
+               if (wr) {
+                       int r = send_dlog_reply(wr->fd_entity.fd, DLOG_REQ_HANDLE_LOGUTIL, DLOG_REQ_RESULT_ERR, NULL, 0);
+                       if (r < 0)
+                               printf("ERROR: both parse_command_line() and send_dlog_reply() failed\n");
+               }
                *rd = NULL;
                reader_free(reader);
        } else
@@ -1565,9 +1569,12 @@ static int service_writer_pipe(struct logger *server, struct writer *wr, struct
                        struct logger_entry_with_msg lem;
                        parse_pipe_message(ple, &lem.header, ple->len);
                        add_recv_timestamp(&lem.header);
-                       buffer_append(&lem.header, wr->buf_ptr);
+                       r = buffer_append(&lem.header, wr->buf_ptr);
                        wr->readed -= ple->len;
                        memmove(wr->buffer, wr->buffer + ple->len, sizeof wr->buffer - ple->len);
+
+                       if (r)
+                               return r;
                }
        } else if (event->events & EPOLLHUP)
                return -EBADF;
index acacf19..96a49c6 100644 (file)
@@ -85,7 +85,9 @@ int fdi_push_log(struct fd_info *fdi, struct sort_vector *logs, struct log_file
                return -ENOMEM;
 
        if (IS_VECTOR_SIZE_SORTABLE(logs->size)) {
-               sort_vector_push(logs, temp, l_file);
+               const int r = sort_vector_push(logs, temp, l_file);
+               if (r)
+                       return r;
        } else {
                logfile_write_with_rotation(temp, l_file, logs->sort_by);
                free(temp);
index 56637c6..c7e299e 100644 (file)
@@ -256,18 +256,18 @@ int parse_options(int argc, char **argv, struct log_file *l_file, struct sort_ve
                switch (option) {
                case 0: { /* tid filter */
                        int tid;
-                       if (sscanf(optarg, "%d", &tid) == 1)
-                               log_add_filter_tid(l_file->format, tid);
-                       else
+                       if (sscanf(optarg, "%d", &tid) != 1)
                                err_arg_nondigit = 1;
+                       else if (log_add_filter_tid(l_file->format, tid))
+                               goto enomem;
                        break;
                }
                case 1: { /* pid filter */
                        int pid;
-                       if (sscanf(optarg, "%d", &pid) == 1)
-                               log_add_filter_pid(l_file->format, pid);
-                       else
+                       if (sscanf(optarg, "%d", &pid) != 1)
                                err_arg_nondigit = 1;
+                       else if (log_add_filter_pid(l_file->format, pid))
+                               goto enomem;
                        break;
                }
                case 2: { /* version */
@@ -301,10 +301,8 @@ int parse_options(int argc, char **argv, struct log_file *l_file, struct sort_ve
                                err_arg_nondigit = 1;
                        break;
                case 'f':
-                       if (logfile_set_path(l_file, optarg) < 0) {
-                               ERR("Error: not enough memory\n");
-                               return -ENOMEM;
-                       }
+                       if (logfile_set_path(l_file, optarg) < 0)
+                               goto enomem;
                        break;
                case 'v': {
                        const log_print_format format = log_format_from_string(optarg);
@@ -348,6 +346,10 @@ int parse_options(int argc, char **argv, struct log_file *l_file, struct sort_ve
                list_add(filters, "*:D");
 
        return 0;
+
+enomem:
+       ERR("Error: out of memory\n");
+       return -ENOMEM;
 }
 
 int create_initial_fdis(struct fd_info ***fdis, int enabled_buffers, struct fd_ops *buffer_op, struct log_config *conf)
index 2f6cd00..202abef 100644 (file)
@@ -650,7 +650,7 @@ char *log_format_log_line(
        if (!tag || !strlen(tag))
                tag = "DLOG_ERROR_NOTAG";
 
-       msg = log_buffer_get_message(entry);
+       msg = log_buffer_get_message(entry) ?: "DLOG_ERROR_NOMSG";
 
        /*
         * Get the current date/time in pretty form