| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
libgit2 does not use `type_t` suffixes as it's redundant; thus, rename
`git_http_authtype_t` to `git_http_auth_t` for consistency.
|
|
|
|
|
| |
libgit2 does not use `type_t` suffixes as it's redundant; thus, rename
`git_iterator_type_t` to `git_iterator_t` for consistency.
|
|
|
|
|
| |
libgit2 does not use `type_t` suffixes as it's redundant; thus, rename
`git_rebase_type_t` to `git_rebase_t` for consistency.
|
|
|
|
|
| |
libgit2 does not use `type_t` suffixes as it's redundant; thus, rename
`git_merge_diff_type_t` to `git_merge_diff_t` for consistency.
|
|\
| |
| | |
merge: Return non-const git_repository from accessor method
|
| |
| |
| |
| | |
accessor.
|
|\ \
| | |
| | | |
Do not return free'd git_repository object on error
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Regression introduced in commit dde6d9c706bf1ecab545da55ab874a016587af1f.
This issue causes lots of crashes in TortoiseGit.
Signed-off-by: Sven Strickroth <email@cs-ware.de>
|
|\ \ \
| | | |
| | | | |
refs: refuse to delete HEAD
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | | |
This requires adding a new symbolic ref to the testrepo fixture.
Some of the existing tests attempt to delete HEAD, expecting a different failure. Introduce and use a non-HEAD symbolic ref instead.
Adjust a few other tests as needed.
Fixes #5357
|
|\ \ \
| |/ /
|/| | |
index: replace map macros with inline functions
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Depending on whether the index map is case-sensitive or insensitive, we
need to call either `git_idxmap_icase_resize` or `git_idxmap_resize`.
There are multiple locations where we thus use the following pattern:
if (index->ignore_case &&
git_idxmap_icase_resize(map, length) < 0)
return -1;
else if (git_idxmap_resize(map, length) < 0)
return -1;
The funny thing is: on case-insensitive systems, we will try to resize
the map twice in case where `git_idxmap_icase_resize()` doesn't error.
While this will still use the correct hashing function as both map types
use the same, this bug will at least cause us to resize the map twice in
a row.
Fix the issue by introducing a new function `index_map_resize` that
handles case-sensitivity, similar to how `index_map_set` and
`index_map_delete`. Convert all call sites where we were previously
resizing the map to use that new function.
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Traditionally, our maps were mostly implemented via macros that had
weird call semantics. This shows in our index code, where we have macros
that insert into an index map case-sensitively or insensitively, as they
still return error codes via an error parameter. This is unwieldy and,
most importantly, not necessary anymore, due to the introduction of our
high-level map API and removal of macros.
Replace them with inlined functions to make code easier to read.
|
|\ \
| |/
|/| |
Make type mismatch errors consistent
|
|/ |
|
|\
| |
| | |
win32: fix relative symlinks pointing into dirs
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
On Windows platforms, we need some logic to emulate symlink(3P) defined
by POSIX. As unprivileged symlinks on Windows are a rather new feature,
our current implementation is comparatively new and still has some
rough edges in special cases.
One such case is relative symlinks. While relative symlinks to files in
the same directory work as expected, libgit2 currently fails to create
reltaive symlinks pointing into other directories. This is due to the
fact that we forgot to translate the Unix-style target path to
Windows-style. Most importantly, we are currently not converting
directory separators from "/" to "\".
Fix the issue by calling `git_win32_path_canonicalize` on the target.
Add a test that verifies our ability to create such relative links
across directories.
|
|\ \
| | |
| | | |
ntlm: prevent (spurious) compiler warnings
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Pull in commit
https://github.com/ethomson/ntlmclient/commit/e7b2583e1bc28c33c43854e7c318e859b4e83bef
to fix #5353.
|
|\ \ \
| |_|/
|/| | |
Adds support for multiple SSH auth mechanisms being used sequentially
|
| | | |
|
| | | |
|
|\ \ \
| |_|/
|/| | |
netops: handle intact query parameters in service_suffix removal
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Some servers leave the query parameters intact in the
Location header when responding with a redirect.
The service_suffix removal check as written assumed
that the server removed them.
Handle both cases.
Along with PR #5325, this fixes #5321.
There are two new tests. The first already passed;
the second previously failed.
|
|\ \
| | |
| | | |
Refactor packfile code to use zstream abstraction
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | | |
While we do have a `git_zstream` abstraction that encapsulates all the
calls to zlib as well as its error handling, we do not use it in our
pack file code. Refactor it to make the code a lot easier to understand.
|
|/ /
| |
| |
| |
| |
| | |
While we do have a zstream abstraction that encapsulates all the calls
to zlib as well as its error handling, we do not use it in our pack file
code. Refactor it to make the code a lot easier to understand.
|
|\ \
| | |
| | | |
Fix git_submodule_sync with relative url
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When setting up relative URLs for a submodule, then we resolve it to
the actual location and write that into ".git/config" instead of
writing the relative value. We do not yet have a test to nail down this
behaviour, which is now being added by this commit.
|
| | |
| | |
| | |
| | |
| | |
| | | |
The submodule code has grown out-of-date regarding its coding style.
Update `git_submodule_reload` and `git_submodule_sync` to more closely
resemble what the rest of our code base uses.
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
git_submodule_sync should resolve submodule before writing to .git/config
to have the same behavior as git_submodule_init, which does the right thing.
|
|\ \ \
| | | |
| | | | |
http: avoid generating double slashes in url
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Prior to this change, given a remote url with a trailing slash,
such as http://localhost/a/, service requests would contain a
double slash: http://localhost/a//info/refs?service=git-receive-pack.
Detect and prevent that.
Updates #5321
|
|\ \ \
| | | |
| | | | |
Correct typo in name of referenced parameter
|
|/ / /
| | |
| | | |
Signed-off-by: Remy Suen <remy.suen@gmail.com>
|
|\ \ \
| | | |
| | | | |
patch_parse: fix undefined behaviour due to arithmetic on NULL pointers
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Doing arithmetic with NULL pointers is undefined behaviour in the C
standard. We do so regardless when parsing patches, as we happily add a
potential prefix length to prefixed paths. While this works out just
fine as the prefix length is always equal to zero in these cases, thus
resulting in another NULL pointer, it still is undefined behaviour and
was pointed out to us by OSSfuzz.
Fix the issue by checking whether paths are NULL, avoiding the
arithmetic if they are.
|
|\ \ \ \
| |_|/ /
|/| | | |
smart_pkt: fix overflow resulting in OOB read/write of one byte
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When parsing OK packets, we copy any information after the initial "ok "
prefix into the resulting packet. As newlines act as packet boundaries,
we also strip the trailing newline if there is any. We do not check
whether there is any data left after the initial "ok " prefix though,
which leads to a pointer overflow in that case as `len == 0`:
if (line[len - 1] == '\n')
--len;
This out-of-bounds read is a rather useless gadget, as we can only
deduce whether at some offset there is a newline character. In case
there accidentally is one, we overflow `len` to `SIZE_MAX` and then
write a NUL byte into an array indexed by it:
pkt->ref[len] = '\0';
Again, this doesn't seem like something that's possible to be exploited
in any meaningful way, but it may surely lead to inconsistencies or DoS.
Fix the issue by checking whether there is any trailing data after the
packet prefix.
|
|\ \ \
| | | |
| | | | |
branch: clarify documentation around branches
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
As git_reference__name will reallocate storage to account for longer
names (it's actually allocator-dependent), it will cause all existing
pointers to the old object to become dangling, as they now point to
freed memory.
Fix the issue by renaming to a more descriptive name, and pass a pointer
to the actual reference that can safely be invalidated if the realloc
succeeds.
|
| | | | |
|
|\ \ \ \
| |_|/ /
|/| | | |
examples: checkout: implement guess heuristic for remote branches
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
Minor doc improvements
|
| | | | |
| | | | |
| | | | |
| | | | | |
There is no git_stash_apply_flags_t above.
|
| | |/ /
| |/| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
I encountered some problematic URLs,
and was delighted to see that they were already fixed.
I figured I may as well add them to the changelog.
For the record, URLs with no path used to be rejected.
That is arguably correct, but command line git accepts them.
URLs with a path of / and a non-standard port
used to have their port completely ignored!
|
|\ \ \ \
| | | | |
| | | | | |
attr: Update definition of binary macro
|