mirror of
https://github.com/git-for-windows/git.git
synced 2026-04-04 10:11:56 -05:00
strbuf_attach: fix call sites to pass correct alloc
strbuf_attach(sb, buf, len, alloc) requires alloc > len (the buffer must have at least len+1 bytes to hold the NUL). Several call sites passed alloc == len, relying on strbuf_grow(sb, 0) inside strbuf_attach to reallocate. Fix these in mailinfo, am, refs/files-backend, fast-import, and trailer by passing len+1 when the buffer is a NUL-terminated string (or from strbuf_detach). Signed-off-by: Vaidas Pilkauskas <vaidas.pilkauskas@shopify.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
bc6a6cf5ee
commit
a4fddb01c5
@@ -1188,7 +1188,7 @@ static void am_append_signoff(struct am_state *state)
|
||||
{
|
||||
struct strbuf sb = STRBUF_INIT;
|
||||
|
||||
strbuf_attach(&sb, state->msg, state->msg_len, state->msg_len);
|
||||
strbuf_attach(&sb, state->msg, state->msg_len, state->msg_len + 1);
|
||||
append_signoff(&sb, 0, 0);
|
||||
state->msg = strbuf_detach(&sb, &state->msg_len);
|
||||
}
|
||||
|
||||
@@ -3246,7 +3246,7 @@ static void cat_blob(struct object_entry *oe, struct object_id *oid)
|
||||
cat_blob_write("\n", 1);
|
||||
if (oe && oe->pack_id == pack_id) {
|
||||
last_blob.offset = oe->idx.offset;
|
||||
strbuf_attach(&last_blob.data, buf, size, size);
|
||||
strbuf_attach(&last_blob.data, buf, size, size + 1);
|
||||
last_blob.depth = oe->depth;
|
||||
} else
|
||||
free(buf);
|
||||
|
||||
@@ -470,7 +470,7 @@ static int convert_to_utf8(struct mailinfo *mi,
|
||||
return error("cannot convert from %s to %s",
|
||||
charset, mi->metainfo_charset);
|
||||
}
|
||||
strbuf_attach(line, out, out_len, out_len);
|
||||
strbuf_attach(line, out, out_len, out_len + 1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -1806,7 +1806,7 @@ static int commit_ref(struct ref_lock *lock)
|
||||
size_t len = strlen(path);
|
||||
struct strbuf sb_path = STRBUF_INIT;
|
||||
|
||||
strbuf_attach(&sb_path, path, len, len);
|
||||
strbuf_attach(&sb_path, path, len, len + 1);
|
||||
|
||||
/*
|
||||
* If this fails, commit_lock_file() will also fail
|
||||
|
||||
@@ -1009,7 +1009,7 @@ static struct trailer_block *trailer_block_get(const struct process_trailer_opti
|
||||
for (ptr = trailer_lines; *ptr; ptr++) {
|
||||
if (last && isspace((*ptr)->buf[0])) {
|
||||
struct strbuf sb = STRBUF_INIT;
|
||||
strbuf_attach(&sb, *last, strlen(*last), strlen(*last));
|
||||
strbuf_attach(&sb, *last, strlen(*last), strlen(*last) + 1);
|
||||
strbuf_addbuf(&sb, *ptr);
|
||||
*last = strbuf_detach(&sb, NULL);
|
||||
continue;
|
||||
|
||||
Reference in New Issue
Block a user