SHA256
1
0
forked from pool/zchunk
zchunk/0001-Fix-some-small-bugs-found-by-Coverity.patch

64 lines
2.2 KiB
Diff

From 13b0e4d2068a3e4777ad431936910dd732e82dad Mon Sep 17 00:00:00 2001
From: Jonathan Dieter <jdieter@gmail.com>
Date: Sat, 29 Dec 2018 12:25:44 +0000
Subject: [PATCH] Fix some small bugs found by Coverity
Signed-off-by: Jonathan Dieter <jdieter@gmail.com>
---
src/lib/comp/comp.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/src/lib/comp/comp.c b/src/lib/comp/comp.c
index da0cfe1..89b3301 100644
--- a/src/lib/comp/comp.c
+++ b/src/lib/comp/comp.c
@@ -479,8 +479,10 @@ ssize_t comp_read(zckCtx *zck, char *dst, size_t dst_size, bool use_dict) {
}
}
if(zck->comp.data_loc == zck->comp.data_idx->comp_length) {
- if(!comp_end_dchunk(zck, use_dict, zck->comp.data_idx->length))
+ if(!comp_end_dchunk(zck, use_dict, zck->comp.data_idx->length)) {
+ free(src);
return -1;
+ }
if(zck->comp.data_idx == NULL)
zck->comp.data_eof = true;
continue;
@@ -659,10 +661,15 @@ ssize_t PUBLIC zck_get_chunk_comp_data(zckChunk *idx, char *dst,
/* Make sure chunk size is valid */
if(zck_get_chunk_size(idx) < 0)
return -1;
+
/* If the chunk is empty, we're done */
if(zck_get_chunk_size(idx) == 0)
return 0;
+ /* Make sure requested chunk has a beginning */
+ if(zck_get_chunk_start(idx) < 0)
+ return -1;
+
/* Seek to beginning of requested chunk */
if(!seek_data(zck, zck_get_chunk_start(idx), SEEK_SET))
return -1;
@@ -687,12 +694,17 @@ ssize_t PUBLIC zck_get_chunk_data(zckChunk *idx, char *dst,
/* If the chunk is empty, we're done */
if(zck_get_chunk_size(idx) == 0)
return 0;
+ /* Make sure requested chunk has a beginning */
+ if(zck_get_chunk_start(idx) < 0)
+ return -1;
/* Read dictionary if needed */
zckChunk *dict = zck_get_first_chunk(zck);
if(dict == NULL)
return -1;
if(zck_get_chunk_size(dict) > 0 && zck->comp.dict == NULL) {
+ if(zck_get_chunk_start(dict) < 0)
+ return -1;
if(!seek_data(zck, zck_get_chunk_start(dict), SEEK_SET))
return -1;
if(!comp_reset(zck))
--
2.20.1