Skip to content
  • Thomas Gummerer's avatar
    http-push: fix construction of hex value from path · 51bfb734
    Thomas Gummerer authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    The get_oid_hex_from_objpath takes care of creating a oid from a
    pathname.  It does this by memcpy'ing the first two bytes of the path to
    the "hex" string, then skipping the '/', and then copying the rest of the
    path to the "hex" string.  Currently it fails to increase the pointer to
    the hex string, so the second memcpy invocation just mashes over what
    was copied in the first one, and leaves the last two bytes in the string
    uninitialized.
    
    This breaks valgrind in t5540, although the test passes without
    valgrind:
    
    ==5490== Use of uninitialised value of size 8
    ==5490==    at 0x13C6B5: hexval (cache.h:1238)
    ==5490==    by 0x13C6DB: hex2chr (cache.h:1247)
    ==5490==    by 0x13C734: get_sha1_hex (hex.c:42)
    ==5490==    by 0x13C78E: get_oid_hex (hex.c:53)
    ==5490==    by 0x118BDA: get_oid_hex_from_objpath (http-push.c:1023)
    ==5490==    by 0x118C92: process_ls_object (http-push.c:1038)
    ==5490==    by 0x118E5B: handle_remote_ls_ctx (http-push.c:1077)
    ==5490==    by 0x118227: xml_end_tag (http-push.c:815)
    ==5490==    by 0x50C1448: ??? (in /usr/lib/libexpat.so.1.6.6)
    ==5490==    by 0x50C221B: ??? (in /usr/lib/libexpat.so.1.6.6)
    ==5490==    by 0x50BFBF2: ??? (in /usr/lib/libexpat.so.1.6.6)
    ==5490==    by 0x50C0B24: ??? (in /usr/lib/libexpat.so.1.6.6)
    ==5490==  Uninitialised value was created by a stack allocation
    ==5490==    at 0x118B63: get_oid_hex_from_objpath (http-push.c:1012)
    ==5490==
    
    Fix this by correctly incrementing the pointer to the "hex" variable, so
    the first two bytes are left untouched by the memcpy call, and the last
    two bytes are correctly initialized.
    
    Signed-off-by: default avatarThomas Gummerer <t.gummerer@gmail.com>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    51bfb734