Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
builtin-branch: use strbuf in rename_branch()
author
Miklos Vajna
<vmiklos@frugalware.org>
Mon, 17 Nov 2008 20:48:37 +0000
(21:48 +0100)
committer
Junio C Hamano
<gitster@pobox.com>
Tue, 18 Nov 2008 23:46:42 +0000
(15:46 -0800)
In case the length of branch name is greather then PATH_MAX-11, we write
to unallocated memory otherwise.
Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-branch.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
d3f9f9a
)
diff --git
a/builtin-branch.c
b/builtin-branch.c
index c8a8e2a2f4696ebb1bcb28de9cd813fbee9fefd0..494cbac0057e8b145d54eed8713adc7203d97efb 100644
(file)
--- a/
builtin-branch.c
+++ b/
builtin-branch.c
@@
-424,42
+424,45
@@
static void print_ref_list(int kinds, int detached, int verbose, int abbrev, str
static void rename_branch(const char *oldname, const char *newname, int force)
{
static void rename_branch(const char *oldname, const char *newname, int force)
{
-
char oldref[PATH_MAX], newref[PATH_MAX], logmsg[PATH_MAX*2 + 100]
;
+
struct strbuf oldref = STRBUF_INIT, newref = STRBUF_INIT, logmsg = STRBUF_INIT
;
unsigned char sha1[20];
unsigned char sha1[20];
-
char oldsection[PATH_MAX], newsection[PATH_MAX]
;
+
struct strbuf oldsection = STRBUF_INIT, newsection = STRBUF_INIT
;
if (!oldname)
die("cannot rename the current branch while not on any.");
if (!oldname)
die("cannot rename the current branch while not on any.");
- if (snprintf(oldref, sizeof(oldref), "refs/heads/%s", oldname) > sizeof(oldref))
- die("Old branchname too long");
+ strbuf_addf(&oldref, "refs/heads/%s", oldname);
- if (check_ref_format(oldref))
- die("Invalid branch name: %s", oldref);
+ if (check_ref_format(oldref
.buf
))
+ die("Invalid branch name: %s", oldref
.buf
);
- if (snprintf(newref, sizeof(newref), "refs/heads/%s", newname) > sizeof(newref))
- die("New branchname too long");
+ strbuf_addf(&newref, "refs/heads/%s", newname);
- if (check_ref_format(newref))
- die("Invalid branch name: %s", newref);
+ if (check_ref_format(newref
.buf
))
+ die("Invalid branch name: %s", newref
.buf
);
- if (resolve_ref(newref, sha1, 1, NULL) && !force)
+ if (resolve_ref(newref
.buf
, sha1, 1, NULL) && !force)
die("A branch named '%s' already exists.", newname);
die("A branch named '%s' already exists.", newname);
- s
nprintf(logmsg, sizeof(logmsg)
, "Branch: renamed %s to %s",
- oldref
, newre
f);
+ s
trbuf_addf(&logmsg
, "Branch: renamed %s to %s",
+ oldref
.buf, newref.bu
f);
- if (rename_ref(oldref
, newref, logmsg
))
+ if (rename_ref(oldref
.buf, newref.buf, logmsg.buf
))
die("Branch rename failed");
die("Branch rename failed");
+ strbuf_release(&logmsg);
/* no need to pass logmsg here as HEAD didn't really move */
/* no need to pass logmsg here as HEAD didn't really move */
- if (!strcmp(oldname, head) && create_symref("HEAD", newref, NULL))
+ if (!strcmp(oldname, head) && create_symref("HEAD", newref
.buf
, NULL))
die("Branch renamed to %s, but HEAD is not updated!", newname);
die("Branch renamed to %s, but HEAD is not updated!", newname);
- snprintf(oldsection, sizeof(oldsection), "branch.%s", oldref + 11);
- snprintf(newsection, sizeof(newsection), "branch.%s", newref + 11);
- if (git_config_rename_section(oldsection, newsection) < 0)
+ strbuf_addf(&oldsection, "branch.%s", oldref.buf + 11);
+ strbuf_release(&oldref);
+ strbuf_addf(&newsection, "branch.%s", newref.buf + 11);
+ strbuf_release(&newref);
+ if (git_config_rename_section(oldsection.buf, newsection.buf) < 0)
die("Branch is renamed, but update of config-file failed");
die("Branch is renamed, but update of config-file failed");
+ strbuf_release(&oldsection);
+ strbuf_release(&newsection);
}
static int opt_parse_with_commit(const struct option *opt, const char *arg, int unset)
}
static int opt_parse_with_commit(const struct option *opt, const char *arg, int unset)