Fix some coverity-found issues
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
diff --git a/src/attr_file.c b/src/attr_file.c
index d107b5a..156a23d 100644
--- a/src/attr_file.c
+++ b/src/attr_file.c
@@ -232,15 +232,14 @@ int git_attr_file__parse_buffer(
while (!error && *scan) {
/* allocate rule if needed */
- if (!rule) {
- if (!(rule = git__calloc(1, sizeof(*rule)))) {
- error = -1;
- break;
- }
- rule->match.flags = GIT_ATTR_FNMATCH_ALLOWNEG |
- GIT_ATTR_FNMATCH_ALLOWMACRO;
+ if (!rule && !(rule = git__calloc(1, sizeof(*rule)))) {
+ error = -1;
+ break;
}
+ rule->match.flags =
+ GIT_ATTR_FNMATCH_ALLOWNEG | GIT_ATTR_FNMATCH_ALLOWMACRO;
+
/* parse the next "pattern attr attr attr" line */
if (!(error = git_attr_fnmatch__parse(
&rule->match, &attrs->pool, context, &scan)) &&
diff --git a/src/attrcache.c b/src/attrcache.c
index a750154..f1bc704 100644
--- a/src/attrcache.c
+++ b/src/attrcache.c
@@ -176,10 +176,9 @@ static int attr_cache_lookup(
goto cleanup;
entry = attr_cache_lookup_entry(cache, relfile);
- if (!entry) {
- if ((error = attr_cache_make_entry(&entry, repo, relfile)) < 0)
- goto cleanup;
- } else if (entry->file[source] != NULL) {
+ if (!entry)
+ error = attr_cache_make_entry(&entry, repo, relfile);
+ else if (entry->file[source] != NULL) {
file = entry->file[source];
GIT_REFCOUNT_INC(file);
}
@@ -254,8 +253,7 @@ bool git_attr_cache__is_cached(
khiter_t pos;
git_attr_file_entry *entry;
- if (!(cache = git_repository_attr_cache(repo)) ||
- !(files = cache->files))
+ if (!cache || !(files = cache->files))
return false;
pos = git_strmap_lookup_index(files, filename);
diff --git a/src/ignore.c b/src/ignore.c
index b08ff22..f373c94 100644
--- a/src/ignore.c
+++ b/src/ignore.c
@@ -32,9 +32,9 @@ static int parse_ignore_file(
}
while (!error && *scan) {
- if (!match) {
- match = git__calloc(1, sizeof(*match));
- GITERR_CHECK_ALLOC(match);
+ if (!match && !(match = git__calloc(1, sizeof(*match)))) {
+ error = -1;
+ break;
}
match->flags = GIT_ATTR_FNMATCH_ALLOWSPACE | GIT_ATTR_FNMATCH_ALLOWNEG;
diff --git a/src/index.c b/src/index.c
index 083c01f..c044af4 100644
--- a/src/index.c
+++ b/src/index.c
@@ -1880,8 +1880,9 @@ static int parse_index(git_index *index, const char *buffer, size_t buffer_size)
git_oid checksum_calculated, checksum_expected;
#define seek_forward(_increase) { \
- if (_increase >= buffer_size) \
- return index_error_invalid("ran out of data while parsing"); \
+ if (_increase >= buffer_size) { \
+ error = index_error_invalid("ran out of data while parsing"); \
+ goto done; } \
buffer += _increase; \
buffer_size -= _increase;\
}