Commit Graph

16080 Commits

Author SHA1 Message Date
Edward Thomson
6460642539 Merge pull request #7173 from libgit2/ethomson/clar-update
tests: update to latest clar
2026-01-08 14:32:33 +00:00
Edward Thomson
6a41fb7870 tests: update to latest clar 2026-01-08 01:03:42 +00:00
Edward Thomson
2c3ce41c60 Merge pull request #7166 from bakersdozen123/main
Add swift-libgit2 language binding to README
2026-01-07 23:01:57 +00:00
Edward Thomson
9ced0a3731 Merge pull request #7175 from qaqland/main
examples: correct `git_commit_time` comment
2026-01-07 22:59:17 +00:00
qaqland
196c465995 examples: correct git_commit_time comment 2025-12-31 16:36:04 +08:00
Edward Thomson
3ac4c0adb1 Merge pull request #7148 from roberth/refs-shorthand-multi-segment
refs: honor REFSPEC_SHORTHAND for multi-segment refs
2025-12-20 13:08:02 +00:00
Edward Thomson
cd3ebc944e Merge pull request #7164 from ambv/fix-discarded-qualifiers
ci: Fix cases of -Werror=discarded-qualifiers raised by gcc 15.2
2025-12-20 13:05:42 +00:00
Edward Thomson
1fed8b2e95 Merge pull request #7167 from ambv/macos-14 2025-12-19 21:05:34 +00:00
Łukasz Langa
0bf4714508 (Another bump, this time github.com was not accessible from GitHub Actions) 2025-12-12 00:42:53 +01:00
Łukasz Langa
2b7114047e (bump CI as curl failed) 2025-12-11 19:01:19 +01:00
Łukasz Langa
81ba023838 Some versions of leaks want -exclude to not have a space 2025-12-11 18:11:50 +01:00
Łukasz Langa
ed1f2f7eb1 Exclude leaks in SSLHandshake 2025-12-11 17:05:48 +01:00
Łukasz Langa
a44b3257ba Also update nightlies 2025-12-11 12:29:56 +01:00
Łukasz Langa
c81b74fe76 Use macos-14 for experimental features, too 2025-12-11 12:28:44 +01:00
Łukasz Langa
97d17cced3 Switch to macos-14 as macos-13 runners are now retired 2025-12-11 12:28:30 +01:00
bakersdozen123
098a1a58bf Add swift-libgit2 language binding to README 2025-12-10 18:35:22 -08:00
Łukasz Langa
fadbef196e ci: Fix cases of -Werror=discarded-qualifiers raised by gcc 15.2 2025-12-06 23:02:39 +01:00
Edward Thomson
610dcaac06 Merge pull request #7153 from ambv/fix-iterator-index-case-folding-test-docker 2025-12-06 21:54:41 +00:00
Edward Thomson
ce0524670c Merge pull request #7120 from xokdvium/refspec-del
refspec: Detect DEL character in is_valid_name
2025-12-06 17:54:52 +00:00
Edward Thomson
a136eb0c8d Merge pull request #7130 from orgads/init-locals
Fix potential access to uninitialized variables
2025-12-06 17:48:28 +00:00
Edward Thomson
3c30b6fab3 Merge pull request #7138 from jar-of-salt/git-authors-docs-update
Fix Contributing Docs: Incorrect Git Authors Link
2025-12-06 17:46:10 +00:00
Edward Thomson
96eddf51f9 Merge pull request #7161 from ibrahimcetin/add-swiftgitx
Add SwiftGitX to README bindings list
2025-12-06 17:44:42 +00:00
Edward Thomson
31ab9b66c7 Merge pull request #7152 from ambv/update-fedora-docker
ci: update ci/docker/fedora to work with Rawhide 44
2025-12-06 17:38:41 +00:00
Edward Thomson
9fd0741910 Merge pull request #7154 from ShiningMassXAcc/fix-C4703
Fix C4703 uninitialized pointer variable warnings
2025-12-06 17:36:57 +00:00
Edward Thomson
6af47d3989 Merge pull request #7155 from aware70/use-cmake-install-includedir-for-install-interface
Use CMAKE_INSTALL_INCLUDEDIR for libgit2package INSTALL_INTERFACE
2025-12-06 17:28:55 +00:00
Edward Thomson
80cc5c6bd6 Merge pull request #7119 from ehuss/cert_cb-always-called
Update documentation to clarify that cert cb is always called
2025-12-06 17:25:38 +00:00
Edward Thomson
cfed471032 Merge pull request #7102 from pks-gitlab/pks-refformat-extension
Introduction of the "refFormat" extension
2025-12-06 16:58:16 +00:00
Edward Thomson
092bf79393 Merge pull request #7163 from libgit2/ethomson/ssh_exec_updates
SSH exec updates
2025-12-06 16:41:10 +00:00
Edward Thomson
7af54d0866 Merge pull request #7146 from bakersdozen123/fix/custom-ssh-heap-overflow
ssh: fix custom ssh heap buffer overflow
2025-12-06 13:24:59 +00:00
Edward Thomson
7ed8f12087 ssh_exec: use GIT_SSH_COMMAND in tests
We specify additional arguments to the ssh executable; as a result, we
specify arguments with `GIT_SSH_COMMAND`.
2025-12-01 21:44:36 +00:00
Edward Thomson
dfadbd0c8f ssh_exec: support GIT_SSH_COMMAND
Look for the `GIT_SSH_COMMAND` environment variable and prefer it to
`GIT_SSH`. The `GIT_SSH_COMMAND` will execute via the shell, which is
useful to provide additional arguments.
2025-12-01 21:44:36 +00:00
Edward Thomson
f05143b946 ssh_exec: escape remote paths properly
When sending paths to the remote server, escape them properly.
Escape them with a single quote, followed by the escaped character,
followed by another single quote. This prevents misparsing on the
remote side and potential command injection.
2025-12-01 21:44:36 +00:00
Edward Thomson
4c9134e501 str: allow escaping with prefix and suffix
Allow `git_str_puts_escaped` to take an escaping prefix and an escaping
suffix; this allows for more options, including the ability to better
support escaping executed paths.
2025-12-01 21:44:36 +00:00
Edward Thomson
adac288376 str: add case insensitive suffixcmp 2025-12-01 21:44:36 +00:00
Edward Thomson
479a1b5a92 ssh_exec: don't use sh for ssh execution
Construct the arguments for the ssh exec as an explicit array, instead
of trying to create a command-line for sh. The latter may use user input
(the remote path) so this may be vulnerable to command injection.
2025-12-01 21:44:36 +00:00
Edward Thomson
2ad709e77c process: resolve paths for win32
When using `git_process_new` on win32, resolve the path to the
application in the same way that we do on POSIX.

Search `PATH` for command to execute (unless the given executable is
fully qualified). In addition, better match Windows executable lookup
behavior itself (allowing the command to be `foo`, and looking for a
matching `foo.exe` or `foo.cmd`.)
2025-12-01 21:44:36 +00:00
İbrahim Çetin
d41e7d9b38 Add SwiftGitX to README bindings list 2025-12-01 15:03:04 +03:00
Edward Thomson
98ba974617 process: improved process execution with shell
By default, `git_process_new` will no longer try to prepare a single
string to execute with the shell. Instead, by default, arguments remain
parameterized and the command to execute is located within the `PATH`.

The shell can also still optionally be used (so that additional
arguments can be included and variables handled appropriately) but this
is done by keeping arguments parameterized for safety.

This new behavior prevents accidental misuse and potential command-line
injection.
2025-11-30 23:51:52 +00:00
Edward Thomson
4d1e950326 fs: improve executable search on Windows
Ensure that when we look for an executable on Windows that we add
executable suffixes (`.exe`, `.cmd`). Without this, we would not support
looking for (eg) `ssh`, since we actually need to identify a file named
`ssh.exe` (or `ssh.cmd`) in `PATH`.
2025-11-29 12:50:44 +00:00
Edward Thomson
0f20ba29c1 fs: improve path-in-executable location
* Do not search `PATH` for fully- or partially-qualified filenames
  (eg, `foo/bar`)
* Ensure that a file in the `PATH` is executable before returning it
2025-11-29 12:50:44 +00:00
Edward Thomson
ed39bcee40 fs: improved executable-in-path location tests
Ensure that our `find_executable` behaves as expected:

* When the executable contains a fully- or partially-qualified filename
  component (eg, `foo/bar`) that `PATH` is not searched; these paths are
  relative to the current working directory.
* An empty segment in `PATH` (on POSIX systems) is treated as the
  current directory; this is for compatibility with Bourne shells.
* When a file exists in `PATH`, it is actually executable (on POSIX)
2025-11-29 12:50:44 +00:00
aware70
40ba2260a8 Use CMAKE_INSTALL_INCLUDEDIR for libgit2package INSTALL_INTERFACE include dir 2025-10-31 16:57:09 -05:00
Nathan Baird
ecc995f566 a few more variables set to NULL 2025-10-29 09:43:38 -07:00
Nathan Baird
00db738718 net.c 2025-10-29 09:11:12 -07:00
Nathan Baird
09bdcf3d4c Fix C4703 uninitialized pointer variable warnings for VCPKG builds 2025-10-28 12:58:29 -07:00
Łukasz Langa
269427b2bb test: check the correct filesystem for case-sensitivity
It's certainly possible for the root filesystem to be case-sensitive
while /tmp is not, or vice versa. One example where this might happen
is when running Docker containers (like ci/docker/fedora) on macOS with
the repository checkout on AppleFS (not case sensitive) while the
container's /tmp is case sensitive.

This fix allows the test to pass under those circumstances as well.
2025-10-23 14:05:31 +02:00
Łukasz Langa
af72120318 Update ci/docker/fedora to work with Rawhide 44 2025-10-21 16:41:09 +02:00
Robert Hensing
76314a893a refs: honor REFSPEC_SHORTHAND for multi-segment refs
GIT_REFERENCE_FORMAT_REFSPEC_SHORTHAND is documented to "interpret the
name as part of a refspec in shorthand form so the ONELEVEL naming rules
aren't enforced and 'master' becomes a valid name."

However, the multi-segment pseudoref check was not respecting this flag,
rejecting valid refspecs like "A/b" and "HEAD/feature" even when
SHORTHAND was set.

The single-segment check at line 1015 already honors this flag. This
change makes the multi-segment check at line 1021 consistent with that
behavior and with the documented intent.

Git itself accepts these refspec patterns without issue.
2025-10-15 17:53:22 +02:00
bakersdozen123
4277cc75bc ssh: fix custom ssh heap buffer overflow
The `ssh_custom_free()` function calls `strlen()` on the `publickey` 
field, which stores binary data, not a null-terminated string. This 
causes a heap buffer overflow when the public key data is not 
null-terminated or contains embedded null bytes.

The `publickey` field stores binary data, as required by the underlying 
`libssh2_userauth_publickey()` function, which accepts a public key 
parameter of the type `const unsigned char*`. 

Use the stored `publickey_len` instead of `strlen()` to determine the 
correct buffer size.
2025-10-11 09:56:48 -07:00
Sam Altier
e39578a2c5 authors: add self to authors 2025-09-24 14:51:21 -04:00