Allocation handling: 16/120916/15
authorRafal Pietruch <r.pietruch@samsung.com>
Fri, 24 Mar 2017 12:55:04 +0000 (13:55 +0100)
committerRafal Pietruch <r.pietruch@samsung.com>
Fri, 21 Apr 2017 10:17:42 +0000 (12:17 +0200)
 * catch allocation failures
 * do not deallocate argv and static strings

Change-Id: Ifc6c609d9296f1f56abcce8178e242de36bb96a1

src/logger/logger.c
src/logutil/logutil.c
src/shared/logprint.c

index 29b01f1..330d94d 100644 (file)
@@ -1012,7 +1012,7 @@ static int parse_command_line(const char* cmdl, struct writer* wr, struct reader
        }
 
        while (tok && (argc < ARG_MAX)) {
-               argv[argc++] = strdup(tok);
+               argv[argc++] = tok;
                tok = strtok_r(NULL, DELIMITER, &tok_sv);
        }
 
@@ -1169,9 +1169,6 @@ cleanup:
 
        log_config_free(&conf);
 
-       while (argc--)
-               free(argv[argc]);
-
        /* recycle for further usage */
        optarg = NULL;
        optind = 0;
index b8d0f17..4ed46cd 100644 (file)
@@ -525,7 +525,6 @@ void filter_buffer_names(char ** names, int * cnt)
                int buf_id;
                if (strlen(names[i]) && (((buf_id = log_id_by_name(names[i])) < 0) || (buf_id >= LOG_ID_MAX))) {
                        printf("There is no buffer \"%s\"\n", names[i]);
-                       free(names[i]);
                        names[i--] = names[--*cnt];
                }
        }
@@ -692,7 +691,7 @@ int main(int argc, char ** argv)
                        case 0:
                                if (!optarg)
                                        goto missing_optarg;
-                               file_input_names[files_cnt++] = strdup(optarg);
+                               file_input_names[files_cnt++] = optarg;
                                break;
                        case 1:
                                show_help(argv[0]);
@@ -721,7 +720,7 @@ int main(int argc, char ** argv)
                case 'b':
                        if (!optarg)
                                goto missing_optarg;
-                       buffer_names[buffer_cnt++] = strdup(optarg);
+                       buffer_names[buffer_cnt++] = optarg;
                        break;
                case 'u':
                        if (!optarg)
@@ -733,7 +732,7 @@ int main(int argc, char ** argv)
                case 'f':
                        if (!optarg)
                                goto missing_optarg;
-                       l_file.path = strdup(optarg);
+                       l_file.path = optarg;
                        break;
                case 'v':
                        if (!optarg)
@@ -779,7 +778,7 @@ int main(int argc, char ** argv)
 
        if (!buffer_cnt && !files_cnt) // default values if nothing specified
                for (i = 0; i < sizeof(default_buffers)/sizeof(default_buffers[0]); ++i)
-                       buffer_names[buffer_cnt++] = strdup(log_name_by_id(default_buffers[i]));
+                       buffer_names[buffer_cnt++] = log_name_by_id(default_buffers[i]);
 
        filter_buffer_names(buffer_names, &buffer_cnt);
        if (files_cnt + buffer_cnt == 0) {
@@ -817,11 +816,7 @@ int main(int argc, char ** argv)
        }
 
        if (should_getsize) {
-               int ret =  do_getsize(&conf, buffer_names, buffer_cnt);
-               for (i = 0; i < buffer_cnt; ++i)
-                       free(buffer_names[i]);
-               for (i = 0; i < files_cnt; ++i)
-                       free(file_input_names[i]);
+               int ret = do_getsize(&conf, buffer_names, buffer_cnt);
                log_config_free(&conf);
                return ret;
        }
@@ -867,7 +862,6 @@ int main(int argc, char ** argv)
                        if (buffer_cnt == 1 || tag_cnt == 1)
                                fdi->do_sorting = 0;
                }
-               free(buffer_names[i]);
        }
 
        log_config_free(&conf);
@@ -879,7 +873,6 @@ int main(int argc, char ** argv)
                struct fd_info * fdi = handle_file(file_input_names[i]);
                if (fdi)
                        fdi_ptrs[fdi_cnt++] = fdi;
-               free(file_input_names[i]);
        }
 
        handle_pipe(fdi_ptrs, fdi_cnt, dump);
index 44686b6..fdd27f9 100644 (file)
@@ -49,11 +49,16 @@ struct log_format_t {
  */
 static FilterInfo * filterinfo_new(const char *tag, log_priority pri)
 {
-       FilterInfo *p_ret;
-       p_ret = (FilterInfo *)calloc(1, sizeof(FilterInfo));
+       FilterInfo *p_ret = (FilterInfo *)calloc(1, sizeof(FilterInfo));
        if (!p_ret)
                return NULL;
+
        p_ret->mTag = strdup(tag);
+       if (!p_ret->mTag) {
+               free(p_ret);
+               return NULL;
+       }
+
        p_ret->mPri = pri;
 
        return p_ret;
@@ -350,11 +355,14 @@ int log_add_filter_rule(log_format *p_format,
                if (pri == DLOG_DEFAULT)
                        pri = DLOG_VERBOSE;
 
-               char *tagName;
-               tagName = strndup(filterExpression, tagNameLength);
+               char *tagName = strndup(filterExpression, tagNameLength);
+               if (!tagName)
+                       goto error;
 
                FilterInfo *p_fi = filterinfo_new(tagName, pri);
                free(tagName);
+               if (!p_fi)
+                       goto error;
 
                p_fi->p_next = p_format->filters;
                p_format->filters = p_fi;
@@ -377,6 +385,9 @@ int log_add_filter_string(log_format *p_format,
                const char *filterString)
 {
        char *filterStringCopy = strdup(filterString);
+       if (!filterStringCopy)
+               return -1;
+
        char *p_cur = filterStringCopy;
        char *p_ret;
        int err;