Merge pull request #3603 from pks-t/pks/coverity-fixes Coverity fixes
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
diff --git a/src/attr_file.c b/src/attr_file.c
index 500c99b..11d1493 100644
--- a/src/attr_file.c
+++ b/src/attr_file.c
@@ -123,7 +123,7 @@ int git_attr_file__load(
break;
}
case GIT_ATTR_FILE__FROM_FILE: {
- int fd;
+ int fd = -1;
/* For open or read errors, pretend that we got ENOTFOUND. */
/* TODO: issue warning when warning API is available */
@@ -133,7 +133,8 @@ int git_attr_file__load(
(fd = git_futils_open_ro(entry->fullpath)) < 0 ||
(error = git_futils_readbuffer_fd(&content, fd, (size_t)st.st_size)) < 0)
nonexistent = true;
- else
+
+ if (fd >= 0)
p_close(fd);
break;
diff --git a/src/checkout.c b/src/checkout.c
index a92ad08..fd8e2c4 100644
--- a/src/checkout.c
+++ b/src/checkout.c
@@ -1487,8 +1487,10 @@ static int blob_content_to_file(
if (!data->opts.disable_filters &&
(error = git_filter_list__load_ext(
&fl, data->repo, blob, hint_path,
- GIT_FILTER_TO_WORKTREE, &filter_opts)))
+ GIT_FILTER_TO_WORKTREE, &filter_opts))) {
+ p_close(fd);
return error;
+ }
/* setup the writer */
memset(&writer, 0, sizeof(struct checkout_stream));
diff --git a/src/pack-objects.c b/src/pack-objects.c
index fd181fc..0afa28e 100644
--- a/src/pack-objects.c
+++ b/src/pack-objects.c
@@ -91,7 +91,7 @@ static unsigned name_hash(const char *name)
static int packbuilder_config(git_packbuilder *pb)
{
git_config *config;
- int ret;
+ int ret = 0;
int64_t val;
if ((ret = git_repository_config_snapshot(&config, pb->repo)) < 0)
@@ -100,8 +100,10 @@ static int packbuilder_config(git_packbuilder *pb)
#define config_get(KEY,DST,DFLT) do { \
ret = git_config_get_int64(&val, config, KEY); \
if (!ret) (DST) = val; \
- else if (ret == GIT_ENOTFOUND) (DST) = (DFLT); \
- else if (ret < 0) return -1; } while (0)
+ else if (ret == GIT_ENOTFOUND) { \
+ (DST) = (DFLT); \
+ ret = 0; \
+ } else if (ret < 0) goto out; } while (0)
config_get("pack.deltaCacheSize", pb->max_delta_cache_size,
GIT_PACK_DELTA_CACHE_SIZE);
@@ -113,9 +115,10 @@ static int packbuilder_config(git_packbuilder *pb)
#undef config_get
+out:
git_config_free(config);
- return 0;
+ return ret;
}
int git_packbuilder_new(git_packbuilder **out, git_repository *repo)
@@ -605,6 +608,7 @@ static git_pobject **compute_write_order(git_packbuilder *pb)
}
if (wo_end != pb->nr_objects) {
+ git__free(wo);
giterr_set(GITERR_INVALID, "invalid write order");
return NULL;
}
diff --git a/src/pack.c b/src/pack.c
index f6cb3a5..081e370 100644
--- a/src/pack.c
+++ b/src/pack.c
@@ -790,7 +790,6 @@ int git_packfile_stream_open(git_packfile_stream *obj, struct git_pack_file *p,
obj->zstream.next_out = Z_NULL;
st = inflateInit(&obj->zstream);
if (st != Z_OK) {
- git__free(obj);
giterr_set(GITERR_ZLIB, "failed to init packfile stream");
return -1;
}