From 11b5fc14dc57b42e1f977e36b3aa9651edc6aa80 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 4 Mar 2013 19:16:15 -0800 Subject: [PATCH] Check that remote length is non-zero --- native/v8_extensions/git.mm | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/native/v8_extensions/git.mm b/native/v8_extensions/git.mm index 8b06e9962..721b1436f 100644 --- a/native/v8_extensions/git.mm +++ b/native/v8_extensions/git.mm @@ -138,15 +138,18 @@ namespace v8_extensions { const char *merge; if (git_config_get_string(&remote, config, remoteKey) == GIT_OK && git_config_get_string(&merge, config, mergeKey) == GIT_OK) { - const char* shortMergeBranchName; - GetShortBranchName(&shortMergeBranchName, merge); - if (shortMergeBranchName != NULL) { - int updateBranchLength = strlen(remote) + strlen(shortMergeBranchName) + 14; - char* upstreamBranch = (char*) malloc(sizeof(char) * (updateBranchLength + 1)); - upstreamBranch[updateBranchLength] = '\0'; - sprintf(upstreamBranch, "refs/remotes/%s/%s", remote, shortMergeBranchName); + int remoteLength = strlen(remote); + if (remoteLength > 0) { + const char *shortMergeBranchName; + GetShortBranchName(&shortMergeBranchName, merge); + if (shortMergeBranchName != NULL) { + int updateBranchLength = remoteLength + strlen(shortMergeBranchName) + 14; + char* upstreamBranch = (char*) malloc(sizeof(char) * (updateBranchLength + 1)); + sprintf(upstreamBranch, "refs/remotes/%s/%s", remote, shortMergeBranchName); + upstreamBranch[updateBranchLength] = '\0'; + *out = upstreamBranch; + } free((char*)shortMergeBranchName); - *out = upstreamBranch; } }