summaryrefslogtreecommitdiff
path: root/src/refs.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/refs.c')
-rw-r--r--src/refs.c22
1 files changed, 10 insertions, 12 deletions
diff --git a/src/refs.c b/src/refs.c
index af3190ef9..2e88c26c3 100644
--- a/src/refs.c
+++ b/src/refs.c
@@ -36,15 +36,13 @@ enum {
static git_reference *alloc_ref(const char *name)
{
- git_reference *ref;
- size_t namelen = strlen(name), reflen = sizeof(git_reference);
-
- if (GIT_ALLOC_OVERFLOW_ADD(reflen, namelen) ||
- GIT_ALLOC_OVERFLOW_ADD(reflen + namelen, 1) ||
- (ref = git__calloc(1, reflen + namelen + 1)) == NULL)
- return NULL;
+ git_reference *ref = NULL;
+ size_t namelen = strlen(name), reflen;
- memcpy(ref->name, name, namelen + 1);
+ if (!GIT_ADD_SIZET_OVERFLOW(&reflen, sizeof(git_reference), namelen) &&
+ !GIT_ADD_SIZET_OVERFLOW(&reflen, reflen, 1) &&
+ (ref = git__calloc(1, reflen)) != NULL)
+ memcpy(ref->name, name, namelen + 1);
return ref;
}
@@ -96,12 +94,12 @@ git_reference *git_reference__set_name(
git_reference *ref, const char *name)
{
size_t namelen = strlen(name);
- size_t reflen = sizeof(git_reference);
+ size_t reflen;
git_reference *rewrite = NULL;
- if (!GIT_ALLOC_OVERFLOW_ADD(reflen, namelen) &&
- !GIT_ALLOC_OVERFLOW_ADD(reflen + namelen, 1) &&
- (rewrite = git__realloc(ref, reflen + namelen + 1)) != NULL)
+ if (!GIT_ADD_SIZET_OVERFLOW(&reflen, sizeof(git_reference), namelen) &&
+ !GIT_ADD_SIZET_OVERFLOW(&reflen, reflen, 1) &&
+ (rewrite = git__realloc(ref, reflen)) != NULL)
memcpy(rewrite->name, name, namelen + 1);
return rewrite;