Re: [PATCH v2 2/2] name-hash: fix buffer overrun
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Apr 13, 2017, 06:26 UTC
- Message-ID
- <xmqqfuhcq0ul.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <20170403151642.2889-3-git@jeffhostetler.com>
git@jeffhostetler.com writes:
Show 16 quoted lines
> From: Kevin Willford <kewillf@microsoft.com> > > Add check for the end of the entries for the thread partition. > Add test for lazy init name hash with specific directory structure > > The lazy init hash name was causing a buffer overflow when the last > entry in the index was multiple folder deep with parent folders that > did not have any files in them. > > This adds a test for the boundary condition of the thread partitions > with the folder structure that was triggering the buffer overflow. > The test is skipped on single-cpu machines because the original code > path is used in name-hash.c > > The fix was to check if it is the last entry for the thread partition > in the handle_range_dir and not try to use the next entry in the cache.
As I merged the older one already to 'next', I'll queue 1/2 of v2 on top of them and then the following (which is incremental between v1 and this v2 2/2) on top.
-- >8 -- From: Kevin Willford <kewillf@microsoft.com> Date: Mon, 3 Apr 2017 15:16:42 +0000 Subject: [PATCH] t3008: skip lazy-init test on a single-core box
The lazy-init codepath will not be exercised uniless threaded. Skip the entire test on a single-core box. Also replace a hard-coded constant of 2000 (number of cache entries to manifacture for tests) with a variable with a human readable name.
Signed-off-by: Kevin Willford <kewillf@microsoft.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> --- t/t3008-ls-files-lazy-init-name-hash.sh | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/t/t3008-ls-files-lazy-init-name-hash.sh b/t/t3008-ls-files-lazy-init-name-hash.sh index 971975bff4..bdf5198b7e 100755 --- a/t/t3008-ls-files-lazy-init-name-hash.sh +++ b/t/t3008-ls-files-lazy-init-name-hash.sh @@ -4,14 +4,22 @@ test_description='Test the lazy init name hash with various folder structures' . ./test-lib.sh +if test 1 -eq $($GIT_BUILD_DIR/t/helper/test-online-cpus) +then + skip_all='skipping lazy-init tests, single cpu' + test_done +fi + +LAZY_THREAD_COST=2000 + test_expect_success 'no buffer overflow in lazy_init_name_hash' ' ( - test_seq 2000 | sed "s/^/a_/" + test_seq $LAZY_THREAD_COST | sed "s/^/a_/" echo b/b/b - test_seq 2000 | sed "s/^/c_/" + test_seq $LAZY_THREAD_COST | sed "s/^/c_/" test_seq 50 | sed "s/^/d_/" | tr "\n" "/"; echo d ) | - sed -e "s/^/100644 $EMPTY_BLOB /" | + sed "s/^/100644 $EMPTY_BLOB /" | git update-index --index-info && test-lazy-init-name-hash -m '
-- 2.12.2-776-gded3dc243c