• Joe Tsai's avatar
    archive/tar: fix issues with readGNUSparseMap1x0 · 7823197e
    Joe Tsai authored
    Motivations:
    * Use of strconv.ParseInt does not properly treat integers as 64bit,
    preventing this function from working properly on 32bit machines.
    * Use of io.ReadFull does not properly detect truncated streams
    when the file suddenly ends on a block boundary.
    * The function blindly trusts user input for numEntries and allocates
    memory accordingly.
    * The function does not validate that numEntries is not negative,
    allowing a malicious sparse file to cause a panic during make.
    
    In general, this function was overly complicated for what it was
    accomplishing and it was hard to reason that it was free from
    bounds errors. Instead, it has been rewritten and relies on
    bytes.Buffer.ReadString to do the main work. So long as invariants
    about the number of '\n' in the buffer are maintained, it is much
    easier to see why this approach is correct.
    
    Change-Id: Ibb12c4126c26e0ea460ea063cd17af68e3cf609e
    Reviewed-on: https://go-review.googlesource.com/15174Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
    Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    7823197e
Name
Last commit
Last update
..
tar Loading commit data...
zip Loading commit data...