1. 07 Jun, 2016 2 commits
    • index: fix NULL pointer access in index_remove_entry · 13deb874
      When removing an entry from the index by its position, we first
      retrieve the position from the index's entries and then try to
      remove the retrieved value from the index map with
      `DELETE_IN_MAP`. When `index_remove_entry` returns `NULL` we try
      to feed it into the `DELETE_IN_MAP` macro, which will
      unconditionally call `idxentry_hash` and then happily dereference
      the `NULL` entry pointer.
      
      Fix the issue by not passing a `NULL` entry into `DELETE_IN_MAP`.
      Patrick Steinhardt committed
    • transports: smart: fix potential invalid memory dereferences · 7d02019a
      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.
      Patrick Steinhardt committed
  2. 02 Jun, 2016 8 commits
  3. 01 Jun, 2016 7 commits
  4. 27 May, 2016 2 commits
  5. 26 May, 2016 6 commits
  6. 25 May, 2016 1 commit
  7. 24 May, 2016 3 commits
  8. 23 May, 2016 1 commit
  9. 22 May, 2016 1 commit
  10. 19 May, 2016 3 commits
  11. 18 May, 2016 2 commits
  12. 17 May, 2016 1 commit
    • Introduce a function to create a tree based on a different one · 9464f9eb
      Instead of going through the usual steps of reading a tree recursively
      into an index, modifying it and writing it back out as a tree, introduce
      a function to perform simple updates more efficiently.
      
      `git_tree_create_updated` avoids reading trees which are not modified
      and supports upsert and delete operations. It is not as versatile as
      modifying the index, but it makes some common operations much more
      efficient.
      Carlos Martín Nieto committed
  13. 09 May, 2016 1 commit
  14. 08 May, 2016 1 commit
  15. 06 May, 2016 1 commit