Merge branch 'jk/snprintf-cleanups'
Code clean-up. * jk/snprintf-cleanups: daemon: use an argv_array to exec children gc: replace local buffer with git_path transport-helper: replace checked snprintf with xsnprintf convert unchecked snprintf into xsnprintf combine-diff: replace malloc/snprintf with xstrfmt replace unchecked snprintf calls with heap buffers receive-pack: print --pack-header directly into argv array name-rev: replace static buffer with strbuf create_branch: use xstrfmt for reflog message create_branch: move msg setup closer to point of use avoid using mksnpath for refs avoid using fixed PATH_MAX buffers for refs fetch: use heap buffer to format reflog tag: use strbuf to format tag header diff: avoid fixed-size buffer for patch-ids odb_mkstemp: use git_path_buf odb_mkstemp: write filename into strbuf do not check odb_mkstemp return value for errors
This commit is contained in:
@ -72,25 +72,22 @@ static int for_each_tag_name(const char **argv, each_tag_name_fn fn,
|
||||
const void *cb_data)
|
||||
{
|
||||
const char **p;
|
||||
char ref[PATH_MAX];
|
||||
struct strbuf ref = STRBUF_INIT;
|
||||
int had_error = 0;
|
||||
unsigned char sha1[20];
|
||||
|
||||
for (p = argv; *p; p++) {
|
||||
if (snprintf(ref, sizeof(ref), "refs/tags/%s", *p)
|
||||
>= sizeof(ref)) {
|
||||
error(_("tag name too long: %.*s..."), 50, *p);
|
||||
had_error = 1;
|
||||
continue;
|
||||
}
|
||||
if (read_ref(ref, sha1)) {
|
||||
strbuf_reset(&ref);
|
||||
strbuf_addf(&ref, "refs/tags/%s", *p);
|
||||
if (read_ref(ref.buf, sha1)) {
|
||||
error(_("tag '%s' not found."), *p);
|
||||
had_error = 1;
|
||||
continue;
|
||||
}
|
||||
if (fn(*p, ref, sha1, cb_data))
|
||||
if (fn(*p, ref.buf, sha1, cb_data))
|
||||
had_error = 1;
|
||||
}
|
||||
strbuf_release(&ref);
|
||||
return had_error;
|
||||
}
|
||||
|
||||
@ -231,26 +228,22 @@ static void create_tag(const unsigned char *object, const char *tag,
|
||||
unsigned char *prev, unsigned char *result)
|
||||
{
|
||||
enum object_type type;
|
||||
char header_buf[1024];
|
||||
int header_len;
|
||||
struct strbuf header = STRBUF_INIT;
|
||||
char *path = NULL;
|
||||
|
||||
type = sha1_object_info(object, NULL);
|
||||
if (type <= OBJ_NONE)
|
||||
die(_("bad object type."));
|
||||
|
||||
header_len = snprintf(header_buf, sizeof(header_buf),
|
||||
"object %s\n"
|
||||
"type %s\n"
|
||||
"tag %s\n"
|
||||
"tagger %s\n\n",
|
||||
sha1_to_hex(object),
|
||||
typename(type),
|
||||
tag,
|
||||
git_committer_info(IDENT_STRICT));
|
||||
|
||||
if (header_len > sizeof(header_buf) - 1)
|
||||
die(_("tag header too big."));
|
||||
strbuf_addf(&header,
|
||||
"object %s\n"
|
||||
"type %s\n"
|
||||
"tag %s\n"
|
||||
"tagger %s\n\n",
|
||||
sha1_to_hex(object),
|
||||
typename(type),
|
||||
tag,
|
||||
git_committer_info(IDENT_STRICT));
|
||||
|
||||
if (!opt->message_given) {
|
||||
int fd;
|
||||
@ -288,7 +281,8 @@ static void create_tag(const unsigned char *object, const char *tag,
|
||||
if (!opt->message_given && !buf->len)
|
||||
die(_("no tag message?"));
|
||||
|
||||
strbuf_insert(buf, 0, header_buf, header_len);
|
||||
strbuf_insert(buf, 0, header.buf, header.len);
|
||||
strbuf_release(&header);
|
||||
|
||||
if (build_tag_object(buf, opt->sign, result) < 0) {
|
||||
if (path)
|
||||
|
Reference in New Issue
Block a user