Skip to content
  • Jeff King's avatar
    read_tree(): respect max_allowed_tree_depth · 1ee7a5c3
    Jeff King authored and Junio C Hamano's avatar Junio C Hamano committed
    The read_tree() function reads trees recursively (via its read_tree_at()
    helper). This can cause it to run out of stack space on very deep trees.
    Let's teach it about the new core.maxTreeDepth option.
    
    The easiest way to demonstrate this is via "ls-tree -r", which the test
    covers. Note that I needed a tree depth of ~30k to trigger a segfault on
    my Linux system, not the 4100 used by our "big" test in t6700. However,
    that test still tells us what we want: that the default 4096 limit is
    enough to prevent segfaults on all platforms. We could bump it, but that
    increases the cost of the test setup for little gain.
    
    As an interesting side-note: when I originally wrote this patch about 4
    years ago, I needed a depth of ~50k to segfault. But porting it forward,
    the number is much lower. Seemingly little things like cf098321
    
     (hash:
    add an algo member to struct object_id, 2021-04-26) take it from 32,722
    to 29,080.
    
    Signed-off-by: default avatarJeff King <peff@peff.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    1ee7a5c3