aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNaoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>2022-07-21 07:12:26 +0900
committerNaoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>2022-08-05 00:35:05 +0900
commiteb7fddaec547c4c9d47cee77bd5419d34ab5f1df (patch)
tree5ee0575eb90ea7c266580f8d60bcee9f2351f7e5
parent6bf3f5a870a28c7989a24ab6ae3040c650f84897 (diff)
Fix undefined fail case
The some error case are not detect in err detection method. This patch fix fail path to avoid undefined fail case. Bug-AGL: SPEC-4500 Signed-off-by: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp> Change-Id: Ic641fd121ef8c48891109207eec51afbc8a5ada1
-rw-r--r--lib/fileop.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/lib/fileop.c b/lib/fileop.c
index c0f53a6..7fd029e 100644
--- a/lib/fileop.c
+++ b/lib/fileop.c
@@ -74,9 +74,8 @@ int refop_new_file_write(refop_handle_t handle, uint8_t *data, int64_t bufsize)
return -1;
}
- wsize = safe_write(fd, pbuf, bufsize + sizeof(s_refop_file_header));
+ wsize = safe_write(fd, pbuf, bufsize + sizeof(s_refop_file_header));
if (wsize < 0) {
- // All open error couldnt recover.
(void)close(fd);
free(pbuf);
return -1;
@@ -110,7 +109,7 @@ int refop_file_rotation(refop_handle_t handle)
latest_state = refop_file_test(hndl->latestfile);
backup_state = refop_file_test(hndl->backupfile1);
- if (latest_state == -2 || backup_state == -2)
+ if (latest_state <= -2 || backup_state <= -2)
return -1;
// Operation algorithm
@@ -170,7 +169,7 @@ int refop_file_rotation(refop_handle_t handle)
* @retval 1 Succeeded with recover.
* @retval -1 Abnormal fail. Shall not continue.
* @retval -2 No data.
- * @retval -3 Broaken data.
+ * @retval -3 Broken data.
*/
int refop_file_pickup(refop_handle_t handle, uint8_t *data, int64_t bufsize, int64_t *readsize)
{
@@ -185,7 +184,7 @@ int refop_file_pickup(refop_handle_t handle, uint8_t *data, int64_t bufsize, int
(*readsize) = ressize;
return 0;
} else if (ret1 < -1) {
- // latest file was broaken, file remove
+ // latest file was broken, file remove
(void)unlink(hndl->latestfile);
}
@@ -195,7 +194,7 @@ int refop_file_pickup(refop_handle_t handle, uint8_t *data, int64_t bufsize, int
(*readsize) = ressize;
return 1;
} else if (ret2 < -1) {
- // latest file was broaken, file remove
+ // backup file was broken, file remove
(void)unlink(hndl->latestfile);
}
@@ -258,9 +257,11 @@ int refop_file_get_with_validation(const char *file, uint8_t *data, int64_t bufs
fd = open(file, (O_CLOEXEC | O_RDONLY | O_NOFOLLOW));
if (fd < 0) {
if (errno == ENOENT)
- return -1;
+ ret = -1;
else
- return -6;
+ ret = -6;
+
+ goto invalid;
}
size = safe_read(fd, &head, sizeof(head));
@@ -314,7 +315,7 @@ int refop_file_get_with_validation(const char *file, uint8_t *data, int64_t bufs
invalid:
free(pmalloc); //free is NULL safe
- if (fd != -1)
+ if (fd >= 0)
(void)close(fd);
return ret;