• Show log

    Commit

  • Hash : 7d02019a
    Author : Patrick Steinhardt
    Date : 2016-06-06T12:59:17

    transports: smart: fix potential invalid memory dereferences
    
    When we receive a packet of exactly four bytes encoding its
    length as those four bytes it can be treated as an empty line.
    While it is not really specified how those empty lines should be
    treated, we currently ignore them and do not return an error when
    trying to parse it but simply advance the data pointer.
    
    Callers invoking `git_pkt_parse_line` are currently not prepared
    to handle this case as they do not explicitly check this case.
    While they could always reset the passed out-pointer to `NULL`
    before calling `git_pkt_parse_line` and determine if the pointer
    has been set afterwards, it makes more sense to update
    `git_pkt_parse_line` to set the out-pointer to `NULL` itself when
    it encounters such an empty packet. Like this it is guaranteed
    that there will be no invalid memory references to free'd
    pointers.
    
    As such, the issue has been fixed such that `git_pkt_parse_line`
    always sets the packet out pointer to `NULL` when an empty packet
    has been received and callers check for this condition, skipping
    such packets.