Skip to content

Commit fabacb7

Browse files
authored
Merge pull request libgit2#6007 from boretrk/array
array: check dereference from void * type
2 parents c7a195a + 7f1dd70 commit fabacb7

File tree

3 files changed

+9
-8
lines changed

3 files changed

+9
-8
lines changed

src/array.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,13 +70,13 @@ GIT_INLINE(void *) git_array_grow(void *_a, size_t item_size)
7070
#define git_array_alloc(a) \
7171
(((a).size >= (a).asize) ? \
7272
git_array_grow(&(a), sizeof(*(a).ptr)) : \
73-
((a).ptr ? &(a).ptr[(a).size++] : NULL))
73+
((a).ptr ? &(a).ptr[(a).size++] : (void *)NULL))
7474

75-
#define git_array_last(a) ((a).size ? &(a).ptr[(a).size - 1] : NULL)
75+
#define git_array_last(a) ((a).size ? &(a).ptr[(a).size - 1] : (void *)NULL)
7676

77-
#define git_array_pop(a) ((a).size ? &(a).ptr[--(a).size] : NULL)
77+
#define git_array_pop(a) ((a).size ? &(a).ptr[--(a).size] : (void *)NULL)
7878

79-
#define git_array_get(a, i) (((i) < (a).size) ? &(a).ptr[(i)] : NULL)
79+
#define git_array_get(a, i) (((i) < (a).size) ? &(a).ptr[(i)] : (void *)NULL)
8080

8181
#define git_array_size(a) (a).size
8282

src/diff_driver.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -389,13 +389,13 @@ int git_diff_driver_lookup(
389389

390390
void git_diff_driver_free(git_diff_driver *driver)
391391
{
392-
size_t i;
392+
git_diff_driver_pattern *pat;
393393

394394
if (!driver)
395395
return;
396396

397-
for (i = 0; i < git_array_size(driver->fn_patterns); ++i)
398-
git_regexp_dispose(& git_array_get(driver->fn_patterns, i)->re);
397+
while ((pat = git_array_pop(driver->fn_patterns)) != NULL)
398+
git_regexp_dispose(&pat->re);
399399
git_array_clear(driver->fn_patterns);
400400

401401
git_regexp_dispose(&driver->word_pattern);

src/tree.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1251,8 +1251,9 @@ int git_tree_create_updated(git_oid *out, git_repository *repo, git_tree *baseli
12511251
}
12521252
case GIT_TREE_UPDATE_REMOVE:
12531253
{
1254+
tree_stack_entry *last = git_array_last(stack);
12541255
char *basename = git_path_basename(update->path);
1255-
error = git_treebuilder_remove(git_array_last(stack)->bld, basename);
1256+
error = git_treebuilder_remove(last->bld, basename);
12561257
git__free(basename);
12571258
break;
12581259
}

0 commit comments

Comments
 (0)