- 06 Jan, 2017 2 commits
-
-
The Git protocol does not specify what should happen in the case of an empty packet line (that is a packet line "0004"). We currently indicate success, but do not return a packet in the case where we hit an empty line. The smart protocol was not prepared to handle such packets in all cases, though, resulting in a `NULL` pointer dereference. Fix the issue by returning an error instead. As such kind of packets is not even specified by upstream, this is the right thing to do.
Patrick Steinhardt committed -
Each packet line in the Git protocol is prefixed by a four-byte length of how much data will follow, which we parse in `git_pkt_parse_line`. The transmitted length can either be equal to zero in case of a flush packet or has to be at least of length four, as it also includes the encoded length itself. Not checking this may result in a buffer overflow as we directly pass the length to functions which accept a `size_t` length as parameter. Fix the issue by verifying that non-flush packets have at least a length of `PKT_LEN_SIZE`.
Patrick Steinhardt committed
-
- 29 Dec, 2016 1 commit
-
-
Error messages should be sentence fragments, and therefore: 1. Should not begin with a capital letter, 2. Should not conclude with punctuation, and 3. Should not end a sentence and begin a new one
Edward Thomson committed
-
- 07 Jun, 2016 1 commit
-
-
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
-
- 23 Feb, 2016 2 commits
-
-
Patrick Steinhardt committed
-
Patrick Steinhardt committed
-
- 18 Feb, 2016 1 commit
-
-
Patrick Steinhardt committed
-
- 17 Aug, 2015 1 commit
-
-
Anders Borum committed
-
- 12 Jul, 2015 1 commit
-
-
The header src/cc-compat.h defines portable format specifiers PRIuZ, PRIdZ, and PRIxZ. The original report highlighted the need to use these specifiers in examples/network/fetch.c. For this commit, I checked all C source and header files not in deps/ and transitioned to the appropriate format specifier where appropriate.
Matthew Plough committed
-
- 13 Feb, 2015 4 commits
-
-
Make our overflow checking look more like gcc and clang's, so that we can substitute it out with the compiler instrinsics on platforms that support it. This means dropping the ability to pass `NULL` as an out parameter. As a result, the macros also get updated to reflect this as well.
Edward Thomson committed -
Use `size_t` to hold the size of arrays to ease overflow checking, lest we check for overflow of a `size_t` then promptly truncate by packing the length into a smaller type.
Edward Thomson committed -
Introduce `git_buf_grow_by` to incrementally increase the size of a `git_buf`, performing an overflow calculation on the growth.
Edward Thomson committed -
Introduce some helper macros to test integer overflow from arithmetic and set error message appropriately.
Edward Thomson committed
-
- 21 May, 2014 1 commit
-
-
Add a symref_target field to git_remote_head to expose the symref mappings to the user.
Carlos Martín Nieto committed
-
- 21 Apr, 2014 1 commit
-
-
Jacques Germishuys committed
-
- 30 Oct, 2013 1 commit
-
-
This tells the server that we speak it, but we don't make use of its extra information to determine if there's a better place to stop negotiating. In a somewhat-related change, reorder the capabilities so we ask for them in the same order as git does. Also take this opportunity to factor out a fairly-indented portion of the negotiation logic.
Carlos Martín Nieto committed
-
- 04 Oct, 2013 1 commit
-
-
Carlos Martín Nieto committed
-
- 12 Mar, 2013 1 commit
-
-
Philip Kelley committed
-
- 08 Jan, 2013 1 commit
-
-
Edward Thomson committed
-
- 29 Nov, 2012 1 commit
-
-
Philip Kelley committed
-
- 28 Nov, 2012 1 commit
-
-
Philip Kelley committed
-
- 01 Nov, 2012 1 commit
-
-
Philip Kelley committed
-
- 30 Sep, 2012 1 commit
-
-
This tells the remote to send us any tags that point to objects that we are downloading.
Carlos Martín Nieto committed
-
- 24 Aug, 2012 1 commit
-
-
This lets us notify the user of what the remote end is doing while we wait for it to start sending us the packfile.
Carlos Martín Nieto committed
-
- 30 Jul, 2012 2 commits
-
-
This allows us to add capabilitites to both at the same time, keeps them in sync and removes a lot of code. gitno_buffer now uses a callback to fill its buffer, allowing us to use the same interface for git and http (which uses callbacks).
Carlos Martín Nieto committed -
Carlos Martín Nieto committed
-
- 13 Jul, 2012 1 commit
-
-
The correct way to advertise out capabilities is by appending them to the first 'want' line, using SP as separator, instead of NUL as the server does. Inconsistent documentation lead to the use of NUL in libgit2. Fix this so we can request much more efficient packs from the remote which reduces the indexing time considerably.
Carlos Martín Nieto committed
-
- 19 May, 2012 1 commit
-
-
If it's not available, an error saying so will be returned when trying to use a https:// URL. This also unifies a lot of the network code to use git_transport in many places instead of an socket descriptor.
Carlos Martín Nieto committed
-
- 17 May, 2012 2 commits
-
-
Vicent Martí committed
-
Vicent Martí committed
-
- 08 May, 2012 1 commit
-
-
Clear the error in pkt when we notice that the remote is starting to send the packfile. Fix the format string for Windows networking errors.
Carlos Martín Nieto committed
-
- 30 Apr, 2012 2 commits
-
-
When e.g. a repository isn't found, the server sends an error saying so. Put that error message in our error buffer.
Carlos Martín Nieto committed -
nulltoken committed
-
- 28 Apr, 2012 1 commit
-
-
The recent 64-bit Windows fixes changed the return code in git_pkt_parse_line() so it wouldn't signal a short buffer, breaking the network code. Bring it back.
Carlos Martín Nieto committed
-
- 25 Apr, 2012 1 commit
-
-
Trying to send every single line immediately won't give us any speed improvement and duplicates the code we need for other transports. Make the git transport use the same buffer functions as HTTP.
Carlos Martín Nieto committed
-
- 17 Apr, 2012 1 commit
-
-
This fixes all the warnings on win64 except those in deps, which come from the regex code.
Russell Belfer committed
-
- 11 Apr, 2012 1 commit
-
-
Carlos Martín Nieto committed
-
- 02 Mar, 2012 1 commit
-
-
It turns out that commit 31e9cfc4cbcaf1b38cdd3dbe3282a8f57e5366a5 did not fix the GIT_USUSED behavior on all platforms. This commit walks through and really cleans things up more thoroughly, getting rid of the unnecessary stuff. To remove the use of some GIT_UNUSED, I ended up adding a couple of new iterators for hashtables that allow you to iterator just over keys or just over values. In making this change, I found a bug in the clar tests (where we were doing *count++ but meant to do (*count)++ to increment the value). I fixed that but then found the test failing because it was not really using an empty repo. So, I took some of the code that I wrote for iterator testing and moved it to clar_helpers.c, then made use of that to make it easier to open fixtures on a per test basis even within a single test file.
Russell Belfer committed
-
- 13 Feb, 2012 1 commit
-
-
Signed-off-by: schu <schu-github@schulog.org>
schu committed
-
- 08 Dec, 2011 1 commit
-
-
This converts virtually all of the places that allocate GIT_PATH_MAX buffers on the stack for manipulating paths to use git_buf objects instead. The patch is pretty careful not to touch the public API for libgit2, so there are a few places that still use GIT_PATH_MAX. This extends and changes some details of the git_buf implementation to add a couple of extra functions and to make error handling easier. This includes serious alterations to all the path.c functions, and several of the fileops.c ones, too. Also, there are a number of new functions that parallel existing ones except that use a git_buf instead of a stack-based buffer (such as git_config_find_global_r that exists alongsize git_config_find_global). This also modifies the win32 version of p_realpath to allocate whatever buffer size is needed to accommodate the realpath instead of hardcoding a GIT_PATH_MAX limit, but that change needs to be tested still.
Russell Belfer committed
-