libdvr: LGE Coverity aml dvr report [1/1]
PD#TV-61227
Problem:
LGE report Coverity errors of libdvr.
Solution:
Fix 19 out of 42 errors reported by Coverity for the 2nd round
including BUFFER_SIZE, CHECKED_RETURN, LOCK, NO_EFFECT, PRINTF_ARGS,
RESOURCE_LEAK, STRING_NULL, UNINIT, UNUSED_VALUE and USE_AFTER_FREE
Verify:
Locally tested OK in AH212 RDK environment.
Signed-off-by: Wentao.MA <wentao.ma@amlogic.com>
Change-Id: I0e4e6aa96b73220ee79163c8427eaf9cb9c38d62
diff --git a/src/segment.c b/src/segment.c
index 6a49cf5..8e0763a 100644
--- a/src/segment.c
+++ b/src/segment.c
@@ -65,22 +65,22 @@
DVR_ASSERT(offset + DVR_MAX_LOCATION_SIZE < MAX_SEGMENT_PATH_SIZE);
if (type != SEGMENT_FILE_TYPE_ALL_DATA) {
- strncpy(fname + offset, "-", 1);
+ strncpy(fname + offset, "-", 2);
offset += 1;
sprintf(fname + offset, "%04llu", segment_id);
offset += strlen(fname + offset);
}
if (type == SEGMENT_FILE_TYPE_TS)
- strncpy(fname + offset, ".ts", 3);
+ strncpy(fname + offset, ".ts", 4);
else if (type == SEGMENT_FILE_TYPE_INDEX)
- strncpy(fname + offset, ".idx", 4);
+ strncpy(fname + offset, ".idx", 5);
else if (type == SEGMENT_FILE_TYPE_DAT)
- strncpy(fname + offset, ".dat", 4);
+ strncpy(fname + offset, ".dat", 5);
else if (type == SEGMENT_FILE_TYPE_ONGOING)
- strncpy(fname + offset, ".going", 6);
+ strncpy(fname + offset, ".going", 7);
else if (type == SEGMENT_FILE_TYPE_ALL_DATA)
- strncpy(fname + offset, ".dat", 4);
+ strncpy(fname + offset, ".dat", 5);
}
@@ -110,6 +110,7 @@
char all_dat_fname[MAX_SEGMENT_PATH_SIZE];
char dir_name[MAX_SEGMENT_PATH_SIZE];
char going_name[MAX_SEGMENT_PATH_SIZE];
+ int ret = 0;
DVR_RETURN_IF_FALSE(params);
DVR_RETURN_IF_FALSE(p_handle);
@@ -139,9 +140,15 @@
memset(dir_name, 0, sizeof(dir_name));
segment_get_dirname(dir_name, params->location);
- mkdir(dir_name, 0666);
+ ret = mkdir(dir_name, 0666);
+ if (ret == -1) {
+ DVR_WARN("mkdir of %s returns %d due to errno:%d,%s",
+ dir_name,ret,errno,strerror(errno));
+ }
if (access(dir_name, F_OK) == -1) {
- DVR_WARN("%s dir %s does not exist", __func__, dir_name);
+ DVR_ERROR("%s dir %s does not exist", __func__, dir_name);
+ free(p_ctx);
+ p_ctx = NULL;
return DVR_FAILURE;
}