Skip to content
  • Jeff King's avatar
    add reentrant variants of sha1_to_hex and find_unique_abbrev · af49c6d0
    Jeff King authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    The sha1_to_hex and find_unique_abbrev functions always
    write into reusable static buffers. There are a few problems
    with this:
    
      - future calls overwrite our result. This is especially
        annoying with find_unique_abbrev, which does not have a
        ring of buffers, so you cannot even printf() a result
        that has two abbreviated sha1s.
    
      - if you want to put the result into another buffer, we
        often strcpy, which looks suspicious when auditing for
        overflows.
    
    This patch introduces sha1_to_hex_r and find_unique_abbrev_r,
    which write into a user-provided buffer. Of course this is
    just punting on the overflow-auditing, as the buffer
    obviously needs to be GIT_SHA1_HEXSZ + 1 bytes. But it is
    much easier to audit, since that is a well-known size.
    
    We retain the non-reentrant forms, which just become thin
    wrappers around the reentrant ones. This patch also adds a
    strbuf variant of find_unique_abbrev, which will be handy in
    later patches.
    
    Signed-off-by: default avatarJeff King <peff@peff.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    af49c6d0