From: Jeff King Date: Thu, 10 Jan 2019 06:40:31 GMT Subject: Re: [PATCH 0/5] tree-walk object_id refactor Message-ID: <20190110064030.GB20497@sigill.intra.peff.net> In-Reply-To: <20190110042551.915769-1-sandals@crustytoothpaste.net> On Thu, Jan 10, 2019 at 04:25:46AM +0000, brian m. carlson wrote: > There are a small number of places in our codebase where we cast a > buffer of unsigned char to a struct object_id pointer. When we have > GIT_MAX_RAWSZ set to 32 (because we have SHA-256), one of these places > (the buffer for tree objects) can lead to us copying too much data when > using SHA-1 as the hash, since there are only 20 bytes to read. > > This was not expected to be a problem before future code was introduced, > but due to a combination of series the issue became noticeable. > > This series introduces a refactor to avoid referencing the struct > object_id directly from a buffer and instead storing an additional > struct object_id (and an int) in struct name_entry and referring to > that. I think this is really the only safe and sane solution. We resisted it because of the cost of the extra copies (especially the update_tree_entry() one). But I don't know that anybody actually measured it. Do you have any performance numbers before/after this series? -Peff