summaryrefslogtreecommitdiff
path: root/src/vector.c
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@microsoft.com>2015-02-10 23:13:49 -0500
committerEdward Thomson <ethomson@edwardthomson.com>2015-02-12 22:54:47 -0500
commit3603cb0978b7ef21ff9cd63693ebd6d27bc2bc53 (patch)
tree20f97cffa9b4f44d3ab90bc1686a64d57223a322 /src/vector.c
parent15d54fdd345dadc2854200ce5b9aad0949e3949b (diff)
downloadlibgit2-3603cb0978b7ef21ff9cd63693ebd6d27bc2bc53.tar.gz
git__*allocarray: safer realloc and malloc
Introduce git__reallocarray that checks the product of the number of elements and element size for overflow before allocation. Also introduce git__mallocarray that behaves like calloc, but without the `c`. (It does not zero memory, for those truly worried about every cycle.)
Diffstat (limited to 'src/vector.c')
-rw-r--r--src/vector.c7
1 files changed, 1 insertions, 6 deletions
diff --git a/src/vector.c b/src/vector.c
index b636032b1..27eafebc8 100644
--- a/src/vector.c
+++ b/src/vector.c
@@ -29,14 +29,9 @@ GIT_INLINE(size_t) compute_new_size(git_vector *v)
GIT_INLINE(int) resize_vector(git_vector *v, size_t new_size)
{
- size_t new_bytes;
void *new_contents;
- /* Check for overflow */
- GITERR_CHECK_ALLOC_MULTIPLY(new_size, sizeof(void *));
- new_bytes = new_size * sizeof(void *);
-
- new_contents = git__realloc(v->contents, new_bytes);
+ new_contents = git__reallocarray(v->contents, new_size, sizeof(void *));
GITERR_CHECK_ALLOC(new_contents);
v->_alloc_size = new_size;