Skip to content

Commit a2383b0

Browse files
tianhuaslijinxia
authored andcommitted
tools: acrntrace: remove unsafe api and return value check for snprintf
1, Return value check for snprintf function 2, Replace 'atoi' with 'strtol' Tracked-On: #1254 Signed-off-by: Tianhua Sun <tianhuax.s.sun@intel.com> Acked-by: Yan, Like <like.yan@intel.com> Reviewed-by: Yonghua Huang <yonghua.huang@intel.com> Reviewed-by: Kaige Fu <kaige.fu@intel.com>
1 parent 2975f9f commit a2383b0

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

tools/acrntrace/acrntrace.c

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ static int parse_opt(int argc, char *argv[])
9696
while ((opt = getopt(argc, argv, optString)) != -1) {
9797
switch (opt) {
9898
case 'i':
99-
ret = atoi(optarg);
99+
ret = strtol(optarg, NULL, 10);
100100
if (ret <= 0 || ret >=1000) {
101101
pr_err("'-i' require integer between [1-999]\n");
102102
return -EINVAL;
@@ -105,7 +105,7 @@ static int parse_opt(int argc, char *argv[])
105105
pr_dbg("Period is %lu\n", period);
106106
break;
107107
case 't':
108-
ret = atoi(optarg);
108+
ret = strtol(optarg, NULL, 10);
109109
if (ret <= 0) {
110110
pr_err("'-t' require integer greater than 0\n");
111111
return -EINVAL;
@@ -169,8 +169,10 @@ static int create_trace_file_dir(char *dir)
169169
p->tm_mday, p->tm_hour, p->tm_min, p->tm_sec);
170170
if (ret > TIME_STR_LEN)
171171
printf("WARN: time_str may be truncated\n");
172-
} else
173-
snprintf(time_str, TIME_STR_LEN, "00000000-000000");
172+
} else {
173+
if (snprintf(time_str, TIME_STR_LEN, "00000000-000000") >= TIME_STR_LEN)
174+
printf("WARN: time_str is truncated\n\n");
175+
}
174176

175177
pr_info("start tracing at %s\n", time_str);
176178

@@ -185,7 +187,7 @@ static int create_trace_file_dir(char *dir)
185187

186188
ret = snprintf(dir, TRACE_FILE_DIR_LEN, "%s%s",
187189
TRACE_FILE_ROOT, time_str);
188-
if (ret < (strlen(TRACE_FILE_ROOT) + strlen(time_str)))
190+
if (ret >= TRACE_FILE_DIR_LEN)
189191
printf("WARN: trace file dir name is truncated\n");
190192
if (stat(dir, &st)) {
191193
err = mkdir(dir, 0644);
@@ -231,7 +233,10 @@ static int create_reader(reader_struct * reader, uint32_t cpu)
231233
{
232234
char trace_file_name[TRACE_FILE_NAME_LEN];
233235

234-
snprintf(reader->dev_name, DEV_PATH_LEN, "/dev/%s%u", dev_prefix, cpu);
236+
if (snprintf(reader->dev_name, DEV_PATH_LEN, "/dev/%s%u", dev_prefix, cpu)
237+
>= DEV_PATH_LEN)
238+
printf("WARN: device name is truncated\n");
239+
235240
reader->param.cpuid = cpu;
236241

237242
reader->dev_fd = open(reader->dev_name, O_RDWR);
@@ -254,8 +259,9 @@ static int create_reader(reader_struct * reader, uint32_t cpu)
254259
cpu, reader->param.sbuf->magic, reader->param.sbuf->ele_num,
255260
reader->param.sbuf->ele_size);
256261

257-
snprintf(trace_file_name, TRACE_FILE_NAME_LEN, "%s/%d", trace_file_dir,
258-
cpu);
262+
if(snprintf(trace_file_name, TRACE_FILE_NAME_LEN, "%s/%d", trace_file_dir,
263+
cpu) >= TRACE_FILE_NAME_LEN)
264+
printf("WARN: trace file name is truncated\n");
259265
reader->param.trace_fd = open(trace_file_name,
260266
O_WRONLY | O_CREAT | O_TRUNC, 0644);
261267
if (!reader->param.trace_fd) {

0 commit comments

Comments
 (0)