Commit Graph

2511 Commits

Author SHA1 Message Date
Rafael Garcia Ruiz c4db171dae ostree_kernel_args_contains for OstreeKernelArgs
Check if an argument is present in OstreeKernelArgs. This is a way to
make easier idempotent append and delete operations.
ostree_kernel_args_append_if_missing uses it to avoid inserting a
duplicate key.

Closes #2329

Signed-off-by: Rafael Garcia Ruiz <rafael.garcia@collabora.com>
2022-11-18 13:52:08 +01:00
Simon McVittie 29340dba04 Replace calls to g_memdup() with g_memdup2()
g_memdup() is subject to an integer overflow on 64-bit machines if the
object being copied is larger than UINT_MAX bytes. I suspect none of
these objects can actually be that large in practice, but it's easier
to replace all the calls than it is to assess whether we need to
replace them.

A backport in libglnx is used on systems where GLib is older than 2.68.x.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2022-11-11 17:10:37 -05:00
Luca Bruno 8cb50c16a0
Merge pull request #2760 from cgwalters/offline-deploy-no-bwrap
deploy: Don't rebuild selinux policy on first deployment
2022-11-11 10:16:17 +00:00
Colin Walters bd325061dc deploy: Don't rebuild selinux policy on first deployment
Basically, it should not be necessary - the policy should be
up-to-date.  We don't want to force on continual policy rebuilds.

Even trying to run bwrap when we're *not* in a booted
root can cause failures in nested containerization scenarios.

Closes: https://github.com/ostreedev/ostree/issues/2758
2022-11-09 11:18:36 -05:00
Ricardo Noriega 722be7e3d7 Enabling retry for HTTP 500 internal server error
Signed-off-by: Ricardo Noriega <rnoriega@redhat.com>

Use G_IO_ERROR_BUSY to represent 500 error

Signed-off-by: Ricardo Noriega <rnoriega@redhat.com>

Make G_IO_ERROR_BUSY independent from glib version

Signed-off-by: Ricardo Noriega <rnoriega@redhat.com>
2022-11-08 18:14:31 +01:00
Luca BRUNO a118410b85
lib/repo-refs: properly return an error value
This tweaks a logic check in order to return a proper error value
when the related condition is not satisfied.
2022-10-26 11:12:52 +00:00
Luca BRUNO 99c2f52a78
lib/sign-ed25519: convert invariant checks to assertions
This converts several invariant checks to asserts. Most of the
functions in this file were already using assertions, so this aligns
the remaining few outliers to the rest.
2022-10-26 09:26:06 +00:00
Luca BRUNO 763d2d2863
lib/static-delta: document and check parameters format
This enhances the logic handling GVariant parameters within
`ostree_repo_static_delta_generate()`.
Several of those entries are expected to be zero-terminated values,
and this implicit assumption has been observed to be an hidden trap
in languages where strings and arrays may not carry a terminator value
(e.g. Rust).
In order to improve the situation, this makes the documentation more
explicit and actively tries to catch invalid input parameters.
2022-10-13 16:29:59 +00:00
Jonathan Lebon 4a83cf4a36
Merge pull request #2738 from lucab/ups/lib-zipl-check-open-errors 2022-10-13 11:22:38 -04:00
Luca BRUNO 39ef6253e9
lib/bootloader-zipl: check for errors when opening initrd
This adds a missing error check when opening an initrd in s390x
Secure Execution (SE) logic.
It was detected by RH internal static checks.
2022-10-13 10:48:38 +00:00
Luca BRUNO 1ea5e8e7d2
lib/repo-checkout: fix typo in error message
This fixes a typo in an error message, resulting in a GID vs UID
mixup. It was detected by RH internal static checks.
2022-10-13 10:38:11 +00:00
Colin Walters b04dde8882
Merge pull request #2717 from mangelajo/support-whiteouts
Support overlayfs whiteouts on checkout
2022-09-28 08:35:24 -04:00
Miguel Angel Ajo e234b630f8 Support overlayfs whiteouts on checkout
Introduces an intermediate format for overlayfs storage, where
.wh-ostree. prefixed files will be converted into char 0:0
whiteout devices used by overlayfs to mark deletions across layers.

The CI scripts now uses a volume for the scratch directories
previously in /var/tmp otherwise we cannot create whiteout
devices into an overlayfs mounted filesystem.

Related-Issue: #2712
2022-09-28 12:26:31 +02:00
Luca BRUNO a1018840f4
lib/sysroot-deploy: explicitly handle `g_variant_lookup` results
This explicitly ignores the results of two optional variant lookups,
in order to pacify a RHT internal static analyzer.
2022-09-26 07:42:12 +00:00
Luca BRUNO 5412dc49ae
lib/repo: properly initialize boolean variable
This initializes a boolean variable that was previously left
uninitialized. It was detected by a RHT internal static analyzer.
2022-09-23 13:02:00 +00:00
Dan Nicholson 631e014bd6 lib/pull: Fix max-metadata-size documentation
The documented option is incorrect and has been since it's introduction
in 2c55bc6997.
2022-09-18 12:15:18 -06:00
Luca BRUNO ace973186c
lib/sign: convert invariant checks to assertions
This converts several invariant checks to asserts. Most of the
functions in this file were already using assertions, so this aligns
the remaining few outliers to the rest.
2022-09-09 13:20:43 +00:00
Luca BRUNO 542b79cfeb
otutil: add error handling to variant builders
This enhances a bunch of helpers related to GVariant building, in
order to properly handle errors and avoid some potential cases of
unexpected NULL results.
2022-09-08 13:53:05 +00:00
Colin Walters 6873a2511b
Merge pull request #2708 from nikita-dubrovskii/sh_to_c
s390x: drop shell code for `initrd` modification in SE case
2022-09-08 07:45:04 -04:00
Nikita Dubrovskii c6a53ef6e8 s390x: use 'libarchive' to modify initrd in SE case 2022-09-08 11:41:34 +02:00
Luca BRUNO 642efe924f
lib/mtree: drop redundant name checks
This drops several NULL checks against filename input argument.
Those checks are both redundant (as filename validation already
checks for that) and dangerous (as they return early without
setting an error value).
2022-09-07 12:33:37 +00:00
Luca Bruno 73eda79662
Merge pull request #2707 from lucab/ups/libostree-bootloader-asserts
lib/bootloader: assert invariants
2022-09-06 00:36:11 +00:00
Nikita Dubrovskii 769ac686f1 s390x: simplify 's390x-se-luks-gencpio' script 2022-09-05 12:08:35 +02:00
Luca BRUNO 273089d9e4
lib/bootloader: assert invariants
This tweaks some invariants checks into full assertions, in order
to avoid returning to the caller in case of known invalid states.
2022-09-05 09:27:38 +00:00
Nikita Dubrovskii 49ce9b0289 s390x: ensure both 'root' and 'boot' luks keys exist 2022-09-05 10:46:13 +02:00
git-bruh 35d6ea88f6
ostree-fetcher-curl: check for HTTP2 support before trying to use it 2022-09-03 12:50:00 +05:30
Huijing Hei 37aa2ac287 Fix `ostree admin kargs edit-in-place` assertion when deployments
are pending

This is to support pending deployments instead of rasing assertion.
For example:
```
$ sudo rpm-ostree kargs --append=foo=bar
$ sudo ostree admin kargs edit-in-place --append-if-missing=foobar
```
After reboot we get both `foo=bar foobar`.

Fix https://github.com/ostreedev/ostree/issues/2679
2022-08-29 11:31:32 +08:00
Colin Walters fb826346fe
Merge pull request #2692 from GeorgesStavracas/gbsneto/transaction-leak
lib/commit: Unref repo on success
2022-08-22 14:25:07 -04:00
Luca BRUNO ff7d9a8a6d
libostree: fix a typo in annotation
This fixes a typo in the `allow-none` annotation on
`ostree_sysroot_deployment_set_kargs_in_place` argument.
2022-08-19 10:39:09 +00:00
Georges Basile Stavracas Neto 092421fabf lib/commit: Unref repo on success
Commit 540e60c3 introduced _ostree_repo_auto_transaction_new(), a
private constructor to OstreeRepoAutoTransaction, by factoring out
some code from _ostree_repo_auto_transaction_start(). This factored
code increased the refcount of the 'repo' variable.

Subsequent commit 71304e854c made ostree_repo_prepare_transaction()
use ths newly introduced constructor. However, in this function, the
happy path assumed no ref was taken, and therefore did not unref it.
Commit 71304e854c didn't add the corresponding unref either.

This leaks a reference to OstreeRepo when calling
ostree_repo_prepare_transaction().

Plug this leak by using g_clear_object() to clear the repo field
of OstreeRepoAutoTransaction, instead of simply setting it to NULL.

Closes https://github.com/flatpak/flatpak/issues/4928
2022-08-16 19:54:29 -03:00
Jonathan Lebon 93e47f88f4 lib/commit: Directly use FICLONE for payload link
The idea of payload linking is to reflink between objects where
possible. Instead of relying on `glnx_regfile_copy_bytes` to hit the
`FICLONE` path, just call `FICLONE` directly. At that point in the code,
we've already established that the source and dest repos are on the same
filesystem and that it supports `FICLONE`.

Related: https://gitlab.gnome.org/GNOME/libglnx/-/merge_requests/41
Related: https://github.com/ostreedev/ostree/pull/2684#issuecomment-1204068437
2022-08-15 14:00:08 -04:00
Colin Walters 0a908a180f Move FIFREEZE/FITHAW ioctl invocations into linuxfsutil.c
Should help avoid conflicts between glibc and linux headers.

Closes: https://github.com/ostreedev/ostree/issues/2685
2022-08-03 10:44:51 -04:00
Colin Walters edba4b33be Remove unused `linux/fs.h` includes
Prep for fixing conflicts introduced by newer glibc.
cc https://github.com/ostreedev/ostree/issues/2685
2022-08-03 10:37:40 -04:00
Colin Walters 15740d042c Release 2022.5 2022-07-22 15:08:25 -04:00
Colin Walters 83e6357186 sign/ed25519: Verify signatures are minimum length
The ed25519 signature verification code does not
check that the signature is a minimum/correct length.
As a result, if the signature is too short, libsodium will end up
reading a few bytes out of bounds.

Reported-by: Demi Marie Obenour <demi@invisiblethingslab.com>
Co-authored-by: Demi Marie Obenour <demi@invisiblethingslab.com>

Closes: https://github.com/ostreedev/ostree/security/advisories/GHSA-gqf4-p3gv-g8vw
2022-07-14 17:13:51 -04:00
Colin Walters ed1146738b
Merge pull request #2669 from HuijingHei/fix-kargs
Fix `ostree admin kargs edit-in-place` fails issue
2022-07-13 16:35:28 -04:00
Colin Walters a3749efb1a
Merge pull request #2672 from cgwalters/initialize-sysroot-cleanups
sysroot: Have `ensure_writable` also always initialize
2022-07-13 16:35:17 -04:00
Colin Walters 60853219d5 sysroot: Add a few more assertions about `boot_fd`
These places are all safe, but it would catch bugs in the future
more clearly to trip an assertion here.
2022-07-13 15:38:59 -04:00
Colin Walters 75aa7a22f6 sysroot: Have `ensure_writable` also always initialize
For historical reasons we have a fair bit of distinct sysroot
initialization going on.  A lot of code is calling *just* the new
`ensure_writable()` API, which does basically what you'd expect...
except if we're not using a mount namespace.

Which is the case in unit tests and legacy setups.
Change this API to also ensure the sysroot is fully initialized
even in those cases.  Specifically we'll have `self->sysroot_fd`.

For now, callers that need `/boot` also need to separately
call `_ensure_boot_fd()`.
2022-07-13 15:35:00 -04:00
Colin Walters 2c71655205 deploy: Ensure sysroot is initialized for kargs in place
Even without a mount namespace set up.
2022-07-13 15:32:05 -04:00
Huijing Hei 7b7b6d741b Fix `ostree admin kargs edit-in-place` fails issue
Add func to set kernel arguments in place, instead of create new
deployment
Fix https://github.com/ostreedev/ostree/issues/2664
2022-07-12 16:27:00 +08:00
Saqib Ali d7107e3036 ostree-repo: bls-append-except-default followup
This PR is followup from https://github.com/coreos/coreos-assembler/pull/2863
Summary of changes:
- Moved bls-append-except-default parsing logic to reload_sysroot_config()
- Made sure heap allocated memory is being freed
2022-07-07 16:06:11 -04:00
Colin Walters becc18936f lib: Stop using old `ostree_sysroot_get_repo()` API
It's falliable, and in one place we were actually ignoring
the error and leaving a `NULL` repo object which is just a trap
for people coming along later since it's rarely nullable.

Quite a while ago we switched to loading the repo at the same time
as the sysroot; convert callers in the library to use this infallible
accessor.

Prep for another patch which will use the repo object.
2022-07-06 07:47:57 -04:00
Colin Walters 0d911bf91f
Merge pull request #2632 from saqibali-2k/pr/prune-commit-only
lib/prune: speed up pruning by retrieving only commits
2022-06-30 09:08:54 -04:00
Saqib Ali a984871237 lib/prune: speed up pruning by retrieving only commits
After landing the new --commit-only functionality, we still noticed
exceedingly long pruning times in large repos. Lets add an optimization
that will only retrieve commit objects when --commit-only flag is used.
2022-06-27 08:04:50 -04:00
Nikita Dubrovskii 14a7c0c74b s390x: rename sd-boot to sdboot
Signed-off-by: Nikita Dubrovskii <nikita@linux.ibm.com>
2022-06-24 15:15:57 +02:00
Huijing Hei 3bc59a5206 RFE: Add a hidden option to `ostree admin kargs edit-in-place` to
update all existing deployments in place

Example:
$ sudo ostree admin kargs edit-in-place --append-if-missing=rw
See https://github.com/ostreedev/ostree/issues/2617

This will not add duplicate key, if there is `TESTARG=VAL1` in the
kernel arguments, `--append-if-missing=TESTARG=VAL2` will be ignored.
2022-06-23 22:31:39 +08:00
Colin Walters a13d812368 repo: Document non-obvious way to list all commits
I was going to add an API for this and then realized the empty
string does it.
2022-06-09 18:34:51 -04:00
Joseph Marrero Corchado a6ecd96cda
Merge pull request #2638 from cgwalters/fix-symbol-versioning
lib: Fix symbol versioning inheritance
2022-06-08 17:17:28 -04:00
Colin Walters 145d91d1c9 lib: Fix symbol versioning inheritance
I messed this up; the last release should inherit from the previous
release (N-1) and not the previous to that (N-2).

I think (hope) this isn't an ABI break...

Just noticed this when I was going to add a new symbol.
2022-06-08 16:44:51 -04:00