1. 14 Nov, 2016 11 commits
  2. 11 Nov, 2016 3 commits
    • git_repository_open_ext: fix handling of $GIT_NAMESPACE · c9e967a1
      The existing code would set a namespace of "" (empty string) with
      GIT_NAMESPACE unset.  In a repository where refs/heads/namespaces/
      exists, that can produce incorrect results.  Detect that case and avoid
      setting the namespace at all.
      
      Since that makes the last assignment to error conditional, and the
      previous assignment can potentially get GIT_ENOTFOUND, set error to 0
      explicitly to prevent the call from incorrectly failing with
      GIT_ENOTFOUND.
      Josh Triplett committed
    • curl_stream: check for -1 after CURLINFO_LASTSOCKET · 5ca75fd5
      We're recently trying to upgrade to the current master of libgit2
      in Cargo but we're unfortunately hitting a segfault in one of our
      tests. This particular test is just a small smoke test that https
      works (e.g. it's configured in libgit2). It attempts to clone
      from a URL which simply immediately drops connections after
      they're accepted (e.g. terminate abnormally). We expect to see a
      standard error from libgit2 but unfortunately we're seeing a
      segfault.
      
      This segfault is happening inside of the `wait_for` function of
      `curl_stream.c` at the line `FD_SET(fd, &errfd)` because `fd` is
      -1. This ends up doing an out-of-bounds array access that faults
      the program. I tracked back to where this -1 came from to the
      line here (returned by `CURLINFO_LASTSOCKET`) and added a check
      to return an error.
      Alex Crichton committed
  3. 04 Nov, 2016 4 commits
  4. 02 Nov, 2016 12 commits
  5. 01 Nov, 2016 3 commits
  6. 31 Oct, 2016 6 commits
  7. 28 Oct, 2016 1 commit
    • pqueue: resolve possible NULL pointer dereference · 95fa3880
      The `git_pqueue` struct allows being fixed in its total number of
      entries. In this case, we simply throw away items that are
      inserted into the priority queue by examining wether the new item
      to be inserted has a higher priority than the previous smallest
      one.
      
      This feature somewhat contradicts our pqueue implementation in
      that it is allowed to not have a comparison function. In fact, we
      also fail to check if the comparison function is actually set in
      the case where we add a new item into a fully filled fixed-size
      pqueue.
      
      As we cannot determine which item is the smallest item in absence
      of a comparison function, we fix the `NULL` pointer dereference
      by simply dropping all new items which are about to be inserted
      into a full fixed-size pqueue.
      Patrick Steinhardt committed