From: "brian m. carlson" <sandals@crustytoothpaste.net> To: git@vger.kernel.org Cc: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>, Patryk Obara <patryk.obara@gmail.com>, Jeff King <peff@peff.net>, Eric Sunshine <sunshine@sunshineco.com> Subject: [PATCH v3 35/36] sha1_file: introduce a constant for max header length Date: Mon, 12 Mar 2018 02:27:55 +0000 Message-ID: <20180312022756.483934-36-sandals@crustytoothpaste.net> (raw) In-Reply-To: <20180312022756.483934-1-sandals@crustytoothpaste.net> There were several instances of 32 sprinkled throughout this file, all of which were used for allocating a buffer to store the header of an object. Introduce a constant, MAX_HEADER_LEN, for this purpose. Note that this constant is slightly larger than required; the longest possible header is 28 (7 for "commit", 1 for a space, 20 for a 63-bit length in decimal, and 1 for the NUL). However, the overallocation should not cause any problems, so leave it as it is. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> --- sha1_file.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/sha1_file.c b/sha1_file.c index 60418da10b..581a9dc522 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -30,6 +30,9 @@ #include "packfile.h" #include "fetch-object.h" +/* The maximum size for an object header. */ +#define MAX_HEADER_LEN 32 + const unsigned char null_sha1[GIT_MAX_RAWSZ]; const struct object_id null_oid; const struct object_id empty_tree_oid = { @@ -791,7 +794,7 @@ int check_object_signature(const struct object_id *oid, void *map, enum object_type obj_type; struct git_istream *st; git_hash_ctx c; - char hdr[32]; + char hdr[MAX_HEADER_LEN]; int hdrlen; if (map) { @@ -1150,7 +1153,7 @@ static int sha1_loose_object_info(const unsigned char *sha1, unsigned long mapsize; void *map; git_zstream stream; - char hdr[32]; + char hdr[MAX_HEADER_LEN]; struct strbuf hdrbuf = STRBUF_INIT; unsigned long size_scratch; @@ -1514,7 +1517,7 @@ static int write_buffer(int fd, const void *buf, size_t len) int hash_object_file(const void *buf, unsigned long len, const char *type, struct object_id *oid) { - char hdr[32]; + char hdr[MAX_HEADER_LEN]; int hdrlen = sizeof(hdr); write_object_file_prepare(buf, len, type, oid, hdr, &hdrlen); return 0; @@ -1669,7 +1672,7 @@ static int freshen_packed_object(const unsigned char *sha1) int write_object_file(const void *buf, unsigned long len, const char *type, struct object_id *oid) { - char hdr[32]; + char hdr[MAX_HEADER_LEN]; int hdrlen = sizeof(hdr); /* Normally if we have it in the pack then we do not bother writing @@ -1689,7 +1692,7 @@ int hash_object_file_literally(const void *buf, unsigned long len, int hdrlen, status = 0; /* type string, SP, %lu of the length plus NUL must fit this */ - hdrlen = strlen(type) + 32; + hdrlen = strlen(type) + MAX_HEADER_LEN; header = xmalloc(hdrlen); write_object_file_prepare(buf, len, type, oid, header, &hdrlen); @@ -1709,7 +1712,7 @@ int force_object_loose(const struct object_id *oid, time_t mtime) void *buf; unsigned long len; enum object_type type; - char hdr[32]; + char hdr[MAX_HEADER_LEN]; int hdrlen; int ret; @@ -2191,7 +2194,7 @@ int read_loose_object(const char *path, void *map = NULL; unsigned long mapsize; git_zstream stream; - char hdr[32]; + char hdr[MAX_HEADER_LEN]; *contents = NULL;
next prev parent reply index Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-03-12 2:27 [PATCH v3 00/36] object_id part 12 brian m. carlson 2018-03-12 2:27 ` [PATCH v3 01/36] bulk-checkin: convert index_bulk_checkin to struct object_id brian m. carlson 2018-03-12 2:27 ` [PATCH v3 03/36] cache-tree: convert write_*_as_tree to object_id brian m. carlson 2018-03-12 2:27 ` [PATCH v3 04/36] cache-tree: convert remnants to struct object_id brian m. carlson 2018-03-12 2:27 ` [PATCH v3 05/36] resolve-undo: convert struct resolve_undo_info to object_id brian m. carlson 2018-03-12 2:27 ` [PATCH v3 06/36] tree: convert read_tree_recursive to struct object_id brian m. carlson 2018-03-12 2:27 ` [PATCH v3 07/36] ref-filter: convert grab_objectname " brian m. carlson 2018-03-12 2:27 ` [PATCH v3 08/36] strbuf: convert strbuf_add_unique_abbrev to use " brian m. carlson 2018-03-12 2:27 ` [PATCH v3 09/36] wt-status: convert struct wt_status_state to object_id brian m. carlson 2018-03-12 2:27 ` [PATCH v3 10/36] Convert find_unique_abbrev* to struct object_id brian m. carlson 2018-03-12 2:27 ` [PATCH v3 11/36] http-walker: convert struct object_request to use " brian m. carlson 2018-03-12 2:27 ` [PATCH v3 12/36] send-pack: convert remaining functions to " brian m. carlson 2018-03-12 2:27 ` [PATCH v3 13/36] replace_object: convert struct replace_object to object_id brian m. carlson 2018-03-12 2:27 ` [PATCH v3 14/36] builtin/mktag: convert to struct object_id brian m. carlson 2018-03-12 2:27 ` [PATCH v3 15/36] archive: convert write_archive_entry_fn_t to object_id brian m. carlson 2018-03-12 2:27 ` [PATCH v3 16/36] archive: convert sha1_file_to_archive to struct object_id brian m. carlson 2018-03-12 2:27 ` [PATCH v3 17/36] builtin/index-pack: convert struct ref_delta_entry to object_id brian m. carlson 2018-03-12 2:27 ` [PATCH v3 18/36] sha1_file: convert read_loose_object to use struct object_id brian m. carlson 2018-03-12 2:27 ` [PATCH v3 19/36] sha1_file: convert check_sha1_signature to " brian m. carlson 2018-03-12 2:27 ` [PATCH v3 20/36] streaming: convert open_istream to use " brian m. carlson 2018-03-12 2:27 ` [PATCH v3 21/36] builtin/mktree: convert to " brian m. carlson 2018-03-12 2:27 ` [PATCH v3 22/36] sha1_file: convert assert_sha1_type to object_id brian m. carlson 2018-03-12 2:27 ` [PATCH v3 23/36] sha1_file: convert retry_bad_packed_offset to struct object_id brian m. carlson 2018-03-12 2:27 ` [PATCH v3 24/36] packfile: convert unpack_entry " brian m. carlson 2018-03-12 2:27 ` [PATCH v3 25/36] Convert remaining callers of sha1_object_info_extended to object_id brian m. carlson 2018-03-12 2:27 ` [PATCH v3 26/36] sha1_file: convert sha1_object_info* " brian m. carlson 2018-03-12 2:27 ` [PATCH v3 27/36] builtin/fmt-merge-msg: convert remaining code " brian m. carlson 2018-03-12 2:27 ` [PATCH v3 28/36] builtin/notes: convert static functions " brian m. carlson 2018-03-12 2:27 ` [PATCH v3 29/36] tree-walk: convert get_tree_entry_follow_symlinks internals " brian m. carlson 2018-03-12 2:27 ` [PATCH v3 30/36] streaming: convert istream internals to struct object_id brian m. carlson 2018-03-12 2:27 ` [PATCH v3 31/36] tree-walk: convert tree entry functions to object_id brian m. carlson 2018-03-12 2:27 ` [PATCH v3 32/36] sha1_file: convert read_object_with_reference " brian m. carlson 2018-03-12 2:27 ` [PATCH v3 33/36] sha1_file: convert read_sha1_file to struct object_id brian m. carlson 2018-03-12 2:27 ` [PATCH v3 34/36] Convert lookup_replace_object " brian m. carlson 2018-03-12 2:27 ` brian m. carlson [this message] 2018-03-12 2:27 ` [PATCH v3 36/36] convert: convert " brian m. carlson
Reply instructions: You may reply publically to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style List information: http://vger.kernel.org/majordomo-info.html * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20180312022756.483934-36-sandals@crustytoothpaste.net \ --to=sandals@crustytoothpaste.net \ --cc=git@vger.kernel.org \ --cc=patryk.obara@gmail.com \ --cc=pclouds@gmail.com \ --cc=peff@peff.net \ --cc=sunshine@sunshineco.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
git@vger.kernel.org mailing list mirror (one of many) Archives are clonable: git clone --mirror https://public-inbox.org/git git clone --mirror http://ou63pmih66umazou.onion/git git clone --mirror http://czquwvybam4bgbro.onion/git git clone --mirror http://hjrcffqmbrq6wope.onion/git Newsgroups are available over NNTP: nntp://news.public-inbox.org/inbox.comp.version-control.git nntp://ou63pmih66umazou.onion/inbox.comp.version-control.git nntp://czquwvybam4bgbro.onion/inbox.comp.version-control.git nntp://hjrcffqmbrq6wope.onion/inbox.comp.version-control.git nntp://news.gmane.org/gmane.comp.version-control.git note: .onion URLs require Tor: https://www.torproject.org/ or Tor2web: https://www.tor2web.org/ AGPL code for this site: git clone https://public-inbox.org/ public-inbox