diff options
author | Phong Tran <tranmanphong@gmail.com> | 2018-03-29 13:51:29 +0700 |
---|---|---|
committer | ManikandanChockalingam <manikandan.chockalingam@in.bosch.com> | 2018-03-29 12:21:29 +0530 |
commit | 90c8b5b2890a227088b5a67a21bdc24028b156d5 (patch) | |
tree | eb8fea77da9090e94ada870fa8519ce479e18e58 /src/shared | |
parent | b3b7f98bff66d8235474f68004f7b767835b8e3e (diff) | |
download | DLT-daemon-90c8b5b2890a227088b5a67a21bdc24028b156d5.tar.gz |
minor compiler warning gcc 7.x (#30)
* Fix -Wpointer-compare of compare with null char
Signed-off-by: Phong Tran <tranmanphong@gmail.com>
* dlt_common: fix -Wformat-truncation of snprintf
Avoid snprintf output truncation by handling return value
Signed-off-by: Phong Tran <tranmanphong@gmail.com>
* dlt_offline_trace: Fix Wformat-truncation of snprintf
Compile with Gcc 7.x has the warning of snprintf buffer length size.
Check return value of snprintf() for avoiding the warning.
Signed-off-by: Phong Tran <tranmanphong@gmail.com>
* dlt_common_test: Fix memleak t_dlt_message_read
some resources were not free after using.
Detected by running
valgrind --leak-check=full ./gtest_dlt_common
Signed-off-by: Phong Tran <tranmanphong@gmail.com>
Diffstat (limited to 'src/shared')
-rw-r--r-- | src/shared/dlt_common.c | 12 | ||||
-rw-r--r-- | src/shared/dlt_offline_trace.c | 16 |
2 files changed, 24 insertions, 4 deletions
diff --git a/src/shared/dlt_common.c b/src/shared/dlt_common.c index b98c7fa..818f3ef 100644 --- a/src/shared/dlt_common.c +++ b/src/shared/dlt_common.c @@ -186,8 +186,11 @@ DltReturnValue dlt_print_mixed_string(char *text, int textlength ,uint8_t *ptr, /* print full lines */ for (lines=0; lines< (size / DLT_COMMON_HEX_CHARS); lines++) { + int ret = 0; /* Line number */ - snprintf(text,DLT_COMMON_HEX_LINELEN+1,"%.6x: ",lines * DLT_COMMON_HEX_CHARS); + ret = snprintf(text,DLT_COMMON_HEX_LINELEN+1,"%.6x: ",lines * DLT_COMMON_HEX_CHARS); + if ((ret < 0 ) || (ret >= (DLT_COMMON_HEX_LINELEN + 1))) + dlt_log(LOG_WARNING, "line was truncated\n"); text+=DLT_COMMON_HEX_LINELEN; /* 'XXXXXX: ' */ /* Hex-Output */ @@ -222,7 +225,12 @@ DltReturnValue dlt_print_mixed_string(char *text, int textlength ,uint8_t *ptr, if (rest>0) { /* Line number */ - snprintf(text,9,"%.6x: ", (size / DLT_COMMON_HEX_CHARS) * DLT_COMMON_HEX_CHARS); + int ret = 0; + ret = snprintf(text,9,"%.6x: ", (size / DLT_COMMON_HEX_CHARS) * DLT_COMMON_HEX_CHARS); + if ((ret < 0) || (ret >= 9)) + { + dlt_log(LOG_WARNING, "line number was truncated"); + } text+=DLT_COMMON_HEX_LINELEN; /* 'XXXXXX: ' */ /* Hex-Output */ diff --git a/src/shared/dlt_offline_trace.c b/src/shared/dlt_offline_trace.c index 32b5253..6b7a10a 100644 --- a/src/shared/dlt_offline_trace.c +++ b/src/shared/dlt_offline_trace.c @@ -216,6 +216,7 @@ DltReturnValue dlt_offline_trace_create_new_file(DltOfflineTrace *trace) { /* set filename */ if(trace->filenameTimestampBased) { + int ret = 0; t = time(NULL); tmp = localtime(&t); if (NULL == tmp) { @@ -224,16 +225,27 @@ DltReturnValue dlt_offline_trace_create_new_file(DltOfflineTrace *trace) { } if (strftime(outstr, sizeof(outstr),"%Y%m%d_%H%M%S", tmp) == 0) { } - snprintf(trace->filename, NAME_MAX + 1, "%s/dlt_offlinetrace_%s.dlt", trace->directory, outstr); + ret = snprintf(trace->filename, NAME_MAX , "%s/dlt_offlinetrace_%s.dlt", trace->directory, outstr); + if ((ret < 0) || (ret >= NAME_MAX)) + { + printf("dlt_offlinetrace filename cannot be concatenated\n"); + return DLT_RETURN_ERROR; + } } else { + int ret = 0; /* targeting newest file, ignoring number of files in dir returned */ dlt_offline_trace_storage_dir_info(trace->directory, DLT_OFFLINETRACE_FILENAME_BASE, newest, oldest); idx = dlt_offline_trace_get_idx_of_log_file(newest) + 1; dlt_offline_trace_file_name(outstr, DLT_OFFLINETRACE_FILENAME_BASE, idx); - snprintf(trace->filename, NAME_MAX + 1, "%s/%s", trace->directory, outstr); + ret = snprintf(trace->filename, NAME_MAX, "%s/%s", trace->directory, outstr); + if ((ret < 0) || (ret >= NAME_MAX)) + { + printf("filename cannot be concatenated\n"); + return DLT_RETURN_ERROR; + } } |