Commit Graph

15576 Commits

Author SHA1 Message Date
Carlos Martín Nieto
6fa78bcabc diff: print the file header on GIT_DIFF_FORMAT_PATCH_HEADER
In `diff_print_patch_file` we try to avoid printing the file if we're not sure
that there will be some content. This works fine if we have any later functions
that might get called as part of printing. But when given the format
`GIT_DIFF_FORMAT_PATCH_HEADER`, this is the only function to get called.

Add the binary and hunk functions to those to be called when given this option
and have them exit after printing the header. This takes care of printing the
header if we would be issuing a hunk, but we skip that part.
2024-11-03 12:54:47 +01:00
Carlos Martín Nieto
caa781fc55 diff: add a test for printing just the header
This was a regression leading up to 1.8.
2024-11-03 12:54:46 +01:00
Edward Thomson
3f4182d15e Merge pull request #6936 from libgit2/ethomson/v1.8.4
libgit2 v1.8.4
v1.8.4
2024-10-30 18:27:35 -04:00
Edward Thomson
73644b33f4 v1.8.4: update changelog and version numbers 2024-10-30 17:35:05 -04:00
Edward Thomson
94ba816f66 Revert "commit: fix const declaration"
This reverts commit cf19ddc522, which
was breaking for several projects.
2024-10-30 17:31:33 -04:00
Edward Thomson
3353f78e8e Merge pull request #6931 from libgit2/ethomson/v1.8.3 v1.8.3 2024-10-26 20:03:57 +01:00
Edward Thomson
da3db63688 v1.8.3: update changelog and version numbers 2024-10-26 19:36:15 +01:00
Ludovic Courtès
a44f198f92 Apply suggestions from code review
Co-authored-by: Edward Thomson <ethomson@edwardthomson.com>
2024-10-26 19:29:23 +01:00
Ludovic Courtès
65a7ff0644 http: Initialize ‘on_status’ when using the http-parser backend.
Fixes a bug likely introduced in
d396819101 (in 1.8.1) whereby
‘proxy_settings.on_status’ would be left uninitialized when using the
‘http-parser’ backend, eventually leading to a segfault in
‘http_parser_execute’.  Valgrind would report use of the uninitialized
value like so:

   Conditional jump or move depends on uninitialised value(s)
      at 0x50CD533: http_parser_execute (http_parser.c:910)
      by 0x4928504: git_http_parser_execute (httpparser.c:82)
      by 0x4925C42: client_read_and_parse (httpclient.c:1178)
      by 0x4926F27: git_http_client_read_response (httpclient.c:1458)
      by 0x49255FE: http_stream_read (http.c:427)
      by 0x4929B90: git_smart__recv (smart.c:29)
      by 0x492C147: git_smart__store_refs (smart_protocol.c:58)
      by 0x4929F6C: git_smart__connect (smart.c:171)
      by 0x4904DCE: git_remote_connect_ext (remote.c:963)
      by 0x48A15D2: clone_into (clone.c:449)
      by 0x48A15D2: git__clone (clone.c:546)
      by 0x4010E9: main (libgit2-proxy.c:20)
2024-10-26 19:28:58 +01:00
Edward Thomson
635b3db432 Merge pull request #6828 from Murmele/maint/v1.8
Add assert
2024-06-13 15:22:55 +02:00
Martin Marmsoler
cc2082aa9b Add assert
Description: In an older version of libgit2 in git_object_lookup_prefix was a check that repo is valid, but now there is repo->oid_type in the git_object_lookup and must be checked as well
2024-06-11 23:12:41 +02:00
Edward Thomson
6c5520f334 Merge pull request #6811 from libgit2/ethomson/test_allocator
Introduce a stricter debugging allocator for testing
2024-05-16 11:34:07 +01:00
Edward Thomson
36f7e21ad7 Merge pull request #6817 from libgit2/ethomson/v1.8.1
libgit2 v1.8.1
v1.8.1
2024-05-16 10:58:48 +01:00
Edward Thomson
ae65dac85e v1.8.1: update changelog 2024-05-16 00:49:46 +01:00
Edward Thomson
834ec0f52f v1.8.1: update version numbers 2024-05-16 00:49:40 +01:00
Edward Thomson
eb00b48d91 fixup! alloc: introduce debug allocators 2024-05-15 22:38:33 +01:00
Edward Thomson
abedcfe71c tests: reset the allocator to the default
Instead of setting the allocator to stdalloc, just pass `NULL`, in case
we're running with the debug allocator.
2024-05-13 11:30:25 +01:00
Edward Thomson
afb2ef21bc util: don't return system allocated strings in realpath
realpath(3) _may_ allocate strings (if the second param is NULL) using
the system allocator. However, callers need an assurance that they can
free memory using git__free. If we made realpath do an allocation, then
make sure that we strdup it into our allocator's memory.

More importantly, avoid this behavior by always providing a buffer to
p_realpath invocations.
2024-05-13 11:30:25 +01:00
Edward Thomson
cfd6e0148b tests: use git__ allocator functions consistently 2024-05-13 11:30:25 +01:00
Edward Thomson
aaed67f786 alloc: introduce debug allocators
Instead of tweaking the `stdalloc` allocator when
`GIT_DEBUG_STRICT_ALLOC` is defined, actually create a debugging
allocator. This allows us to ensure that we are strict about things like
not expecting `malloc(0)` to do something useful, but we can also
introduce an excessively pedantic `realloc` implementation that _always_
creates a new buffer, throws away its original `ptr`, and overwrites the
data that's there with garbage. This may be helpful to identify places
that make assumptions about realloc.
2024-05-13 11:30:25 +01:00
Edward Thomson
c7af393a48 Merge pull request #6815 from libgit2/ethomson/signed_comparedness
tree: avoid mixed signedness comparison
2024-05-13 11:29:34 +01:00
Edward Thomson
f5c6b6ab14 Merge pull request #6814 from libgit2/ethomson/alloc
Update git_array allocator to obey strict aliasing rules
2024-05-13 11:29:25 +01:00
Edward Thomson
9a2afb7785 Merge pull request #6813 from libgit2/ethomson/opt_alloc
cli: include alloca on illumos / solaris / sunos
2024-05-13 11:29:04 +01:00
Edward Thomson
0e9eeec69a Merge pull request #6812 from libgit2/ethomson/unused-warnings
rand: avoid uninitialized loadavg warnings
2024-05-13 11:28:48 +01:00
Edward Thomson
5647f6ea7d Merge pull request #6810 from libgit2/ethomson/xdiff
xdiff: use proper free function
2024-05-13 11:28:35 +01:00
Edward Thomson
54218b5506 array: treat git_array ptrs as void *
Avoid sloppy aliasing in our (re-)allocation, which is undefined
behavior. This has been problematic before and was helped by `volatile`
(see b62a6a13b2) but that is not
technically correct, and some compilers / architectures do not
understand that `ptr` is changing due to its aliasing.

Just make `git_array_alloc` behave like `realloc`, taking a `void *` and
returning a `void *`.
2024-05-13 10:48:56 +01:00
Edward Thomson
bb3c31f327 xdiff: use proper free function 2024-05-13 10:44:06 +01:00
Edward Thomson
2fb07fd0e1 rand: avoid uninitialized loadavg warnings 2024-05-13 10:24:33 +01:00
Edward Thomson
99ba44608f tree: avoid mixed signedness comparison
Promote mode to `uint32_t` before comparing it to an `uint16_t` to avoid
mixed signed comparison warnings.
2024-05-13 10:22:44 +01:00
Edward Thomson
b1d6fd0858 cli: include alloca on illumos / solaris / sunos 2024-05-13 10:21:24 +01:00
Edward Thomson
5f796f881b Merge pull request #6808 from qaqland/fix-demo-for-each-ref
examples: fix memory leak in for-each-ref.c
2024-05-13 09:58:45 +01:00
Edward Thomson
26e0bd4ca3 Merge pull request #6806 from libgit2/ethomson/fetch_opts
remote: drop bitfields in git_remote_fetch_options
2024-05-13 09:55:39 +01:00
Edward Thomson
8791a26716 Merge pull request #6809 from csware/fix-revparse-at-at-end
Revparse: Correctly accept ref with '@' at the end
2024-05-13 09:55:04 +01:00
Sven Strickroth
60f219e80b Revparse: Correctly accept ref with '@' at the end
Signed-off-by: Sven Strickroth <email@cs-ware.de>
2024-05-08 17:36:18 +02:00
qaqland
322ea80231 examples: fix memory leak in for-each-ref.c 2024-05-08 11:08:26 +08:00
Edward Thomson
2d649ccd23 remote: drop bitfields in git_remote_fetch_options
In attempting to make a clever change that added fetch options as flags,
while keeping ABI and API compatibility, we screwed up. Bitfields in
structs are implementation-specific and are not necessarily ABI
compatible across compilers.

Make `update_fetchhead` a flags value which is weirdly named, but
that's a future problem. This removes the `report_unchanged` option from
API.
2024-05-06 15:46:21 +01:00
Edward Thomson
e5e233caed Merge pull request #6803 from libgit2/ethomson/sha256_transport
transport: support sha256 oids
2024-05-01 23:00:33 +01:00
Edward Thomson
2fd37e1bfe transport: support sha256 oids 2024-04-29 22:19:11 +01:00
Edward Thomson
6423ffbcd7 Merge pull request #6802 from libgit2/ethomson/cb_err
transport: provide a useful error message during cancellation
2024-04-29 12:02:08 +01:00
Edward Thomson
ffd881eb4a transport: provide a useful error message during cancellation
Since 3618a2a, `git_error_last` does not return NULL when there was no
error. Adapt to this when testing for a user cancelling a callback but
not setting an error message, testing for `klass` of `GIT_ERROR_NONE`.
2024-04-29 09:44:30 +01:00
Edward Thomson
85d42ea10e Merge pull request #6796 from ConradIrwin/no-oob
Bounds check for pack index read
2024-04-23 08:12:04 +01:00
Edward Thomson
b739acaa50 Merge pull request #6713 from sgallagher/llhttp 2024-04-23 08:05:54 +01:00
Edward Thomson
fb1797de63 Merge remote-tracking branch 'origin/main' into libgit2-httpparser 2024-04-23 00:09:50 +01:00
Edward Thomson
15a8d8763e ci: make fedora a nightly build 2024-04-23 00:09:20 +01:00
Edward Thomson
64808a9a8e ci: fixes for fedora
Use fedora's valgrind instead of trying to build our own; omit false
positive leaks in getaddrinfo;
2024-04-23 00:07:48 +01:00
Edward Thomson
98c4955390 http: remove legacy bundled http-parser
Users can still use the legacy Node.js http-parser library, but now we
bundle llhttp and prefer it.
2024-04-22 22:21:23 +01:00
Edward Thomson
d02b549dab http: make llhttp the default 2024-04-22 22:21:23 +01:00
Edward Thomson
d396819101 http: abstract http parsing out of httpclient
Avoid #ifdef's in httpclient.c, and move http parsing into its own file.
2024-04-22 22:21:23 +01:00
Edward Thomson
3599de9073 http: add llhttp as a bundled dependency
Include llhttp as a bundled dependency with the aim to use it as our
default http parser, removing the now-unmaintained Node.js http-parser.
2024-04-22 22:21:23 +01:00
Edward Thomson
06cafdf9d8 pack: upcast to size_t for bounds checking 2024-04-19 09:58:47 +01:00