Skip to content
  • Thomas Rast's avatar
    bundle: keep around names passed to add_pending_object() · efe4be12
    Thomas Rast authored and Junio C Hamano's avatar Junio C Hamano committed
    The 'name' field passed to add_pending_object() is used to later
    deduplicate in object_array_remove_duplicates().
    
    git-bundle had a bug in this area since 18449ab0 (git-bundle: avoid
    packing objects which are in the prerequisites, 2007-03-08): it passed
    the name of each boundary object in a static buffer.  In other words,
    all that object_array_remove_duplicates() saw was the name of the
    *last* added boundary object.
    
    The recent switch to a strbuf in bc2fed49
    
     (bundle: use a strbuf to scan
    the log for boundary commits, 2012-02-22) made this slightly worse: we
    now free the buffer at the end, so it is not even guaranteed that it
    still points into addressable memory by the time object_array_remove_
    duplicates looks at it.  On the plus side however, it was now
    detectable by valgrind.
    
    The fix is easy: pass a copy of the string to add_pending_object.
    
    Signed-off-by: default avatarThomas Rast <trast@student.ethz.ch>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    efe4be12