}
while (tok && (argc < ARG_MAX)) {
- argv[argc++] = strdup(tok);
+ argv[argc++] = tok;
tok = strtok_r(NULL, DELIMITER, &tok_sv);
}
log_config_free(&conf);
- while (argc--)
- free(argv[argc]);
-
/* recycle for further usage */
optarg = NULL;
optind = 0;
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];
}
}
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]);
case 'b':
if (!optarg)
goto missing_optarg;
- buffer_names[buffer_cnt++] = strdup(optarg);
+ buffer_names[buffer_cnt++] = optarg;
break;
case 'u':
if (!optarg)
case 'f':
if (!optarg)
goto missing_optarg;
- l_file.path = strdup(optarg);
+ l_file.path = optarg;
break;
case 'v':
if (!optarg)
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) {
}
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;
}
if (buffer_cnt == 1 || tag_cnt == 1)
fdi->do_sorting = 0;
}
- free(buffer_names[i]);
}
log_config_free(&conf);
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);
*/
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;
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;
const char *filterString)
{
char *filterStringCopy = strdup(filterString);
+ if (!filterStringCopy)
+ return -1;
+
char *p_cur = filterStringCopy;
char *p_ret;
int err;