1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2025-03-14 16:58:22 +03:00

67042 Commits

Author SHA1 Message Date
Daan De Meyer
3abc0cbe30 tmpfiles: Don't fail if file does not exist in item_do()
If the file was removed by some other program, we should just go
to the next one without failing. item_do() is only used for recursive
globs instead of fixed paths so skipping on missing files makes sense
(unlike if the path was fixed where we should probably fail).

Fixes #32691 (hopefully)

(cherry picked from commit 677430b3c7fcd1b352eb66f19b8746741459b91a)
(cherry picked from commit 46419527af7e91346aa523f73ecf85a96ac94c9a)
2024-05-09 16:39:34 +02:00
David Tardon
6b56cc8995 clean-ipc: pass the right error variable
(cherry picked from commit cd35c15de3373fa4415ef013676cde13d9fe7d92)
(cherry picked from commit 9333db0c4d4c96ac448b55d237b701865aee89f0)
2024-05-09 16:39:34 +02:00
David Tardon
22567a5ddb udev-rules: pass the right error variable
(cherry picked from commit 75c64e58d18eb3726386cde4838546b6a2de525b)
(cherry picked from commit 5909e5cff7f2073580c42cd205c919bc33facffa)
2024-05-09 16:39:34 +02:00
David Tardon
5de929e6ff homework-quota: pass the right error variable
(cherry picked from commit 2c30973f0bb538a7ed2d19e8c019fcb7deb882a3)
(cherry picked from commit a2e7aac103565ce931fbcb4ea86e1df5943d7329)
2024-05-09 16:39:34 +02:00
David Tardon
bb7e9d1e02 homework-fscrypt: pass the right error variable
(cherry picked from commit 11bbc1f8b8e367019f1e1e1fece3c1cade6cb1c3)
(cherry picked from commit 9aeadf541d87e9f6a0d990b1f534b3938dd6f83e)
2024-05-09 16:39:34 +02:00
David Tardon
6d332a5c34 homed-manager: pass the right error variable
(cherry picked from commit bc65a5e37d66c22296ba10e63a429ce1fbf14acb)
(cherry picked from commit 9799198824b0ab934a6ea672e561a9b74f334332)
2024-05-09 16:39:34 +02:00
David Tardon
cf7fe02210 test-bpf-foreign-programs: pass the right error variable
(cherry picked from commit 3a5046782e74d0405067a79d7aa14456801ce79e)
(cherry picked from commit b71cbef0f0a2a633e1ca3dafa53f7269701ab5a6)
2024-05-09 16:39:34 +02:00
David Tardon
22a3e92e95 test-bpf-restrict-fs: pass the right error variable
(cherry picked from commit 2dd1676fa7913c6ea45ccc6d01c001e61c37c1b4)
(cherry picked from commit ab2579e56b47d1903c3a8e27f86889d2bbaaa040)
2024-05-09 16:39:34 +02:00
David Tardon
dbe9bb3d09 test-socket-bind: pass the right error variable
(cherry picked from commit 1174ebb45fdc96c4d58676b62b734ebfcc5299d3)
(cherry picked from commit 3cb58c662c196800f2ba3d6f93856308bc7cb7d0)
2024-05-09 16:39:34 +02:00
David Tardon
768169bfaf nspawn: pass the right error variable
(cherry picked from commit 192a452d1ca04cd32153d104e9e3b3c3a6957106)
(cherry picked from commit d8281b2ab916694dd670a88d16cc50a2d8909a19)
2024-05-09 16:39:34 +02:00
David Tardon
c9c11e0501 resolved-dns-stream: pass the right error variable
(cherry picked from commit be6aa742a6c522c4102a02fcd79231ff5bc5fa9f)
(cherry picked from commit ce1df5ee6c105580e5c1a27637d8759316832e71)
2024-05-09 16:39:34 +02:00
David Tardon
4ee6c4b935 exec-invoke: pass the right error variable
(cherry picked from commit 6400084caa758677444354eae552ef5415ba4675)
(cherry picked from commit 2f849d36e02babe508b691f732cde65e52ef6cab)
2024-05-09 16:39:34 +02:00
David Tardon
1ee8e3bbac main: pass the right error variable
(cherry picked from commit ac10f7e28c03c05451547e36eeb9b5c19df0ed34)
(cherry picked from commit 01dce7e5b40daec227ecc33872b3b533748167db)
2024-05-09 16:39:34 +02:00
David Tardon
fedee56717 bless-boot: pass the right error variable
(cherry picked from commit bad6cb5ae8db5d03ded4c852d624014c8738cc7b)
(cherry picked from commit fce226b4ca67aaf225f729182f08b02d3b326555)
2024-05-09 16:39:34 +02:00
David Tardon
131bd313c1 journal-remote-main: pass the right error variable
(cherry picked from commit 47eab95ea813fdeee686ca720287b7fe4189b2d4)
(cherry picked from commit 88710976fe309aeb8e026eabc33eca26eeb8769d)
2024-05-09 16:39:34 +02:00
Nicolas Bouchinet
eecb0ea8ed systemd-boot: Allow key enroll in AuditMode
Since AuditMode automatically switches SetupMode on, it should be
authorized to enroll SecureBoot keys.

Signed-off-by: Nicolas Bouchinet <nicolas.bouchinet@ssi.gouv.fr>
(cherry picked from commit a23a59b324a022a0b38b5f35d01ee1b2b4edf694)
(cherry picked from commit 04f6566568e0618088c7496a7e89da8d949b3c72)
2024-05-09 16:39:34 +02:00
Frantisek Sumsal
80643bc40f test: replace Europe/Kiev with Europe/Kyiv
As the former is deprecated and might not be available (i.e. on Ubuntu
Noble it's only available after installing the tzdata-legacy package).

(cherry picked from commit 568d97953b77fef4cb698894f567d08dfed453c9)
(cherry picked from commit 6e778d4b5fdb741e52fac7151d9789e24eb03648)
2024-05-09 16:39:34 +02:00
Yu Watanabe
dc463b3dd2 sd-journal: verify monotonic timestamp before assigning result
Previously, ret_boot_id was assigned even when the function failed due
to an invalid monotonic timestamp stored for a journal entry.

(cherry picked from commit c9df4714286223017aff1b2f32f96058d249d8ab)
(cherry picked from commit 6549d31b2c88ffecae9502aff6ff5e8fd4414bb6)
2024-05-09 16:39:34 +02:00
Arthur Zamarin
51a9acbfb2 shell-completion: add missing args to bash resolvectl
Signed-off-by: Arthur Zamarin <arthurzam@gentoo.org>
(cherry picked from commit 4a06acda25fb895f65ee24c6378cb8db47577c7a)
(cherry picked from commit df98c064c0b6bdc611c2635631bfb67884e3337e)
2024-05-09 16:39:34 +02:00
Daan De Meyer
b42c049c27 reboot-util: Add some basic validation on reboot arguments
Let's only accept valid ASCII and put a size limit on reboot arguments.

(cherry picked from commit b7ad4778794b6bfc63d4b11c7c39cfe5a21228a4)
(cherry picked from commit dba7fd523c61ea49cefce388bf3993cd52124aeb)
2024-05-09 16:39:34 +02:00
Yu Watanabe
022ec0d50f systemctl: fix log message when glob patterns passed to disable command and friends
Fixes #32599.

(cherry picked from commit 1cca93f7f33547629cc174ec3690a2d40971d021)
(cherry picked from commit 819f3f0be986848d0b1ed82166e1244a6bd6d508)
2024-05-09 16:39:34 +02:00
Daan De Meyer
400f0785e9 core: Fix file descriptor leak
(cherry picked from commit 5bcf0881a322a72c38d518be3e3ae8bff95de5f6)
(cherry picked from commit 844bb02e48be98f4ae594e043c965588be3b138c)
2024-05-09 16:39:34 +02:00
Luca Boccassi
6d84aa76e8 meson: copy prefix mapping CFLAGS when building BPF objects
Otherwise the filenames will contain variable paths and break reproducibility

(cherry picked from commit 8d6e439aae6a5e2e1b89647ec05ca2d0cf8df8b9)
(cherry picked from commit 4a8f9649caa996a6969365f7f41cf577b5cca291)
2024-05-09 16:39:34 +02:00
Luca Boccassi
f63673d0a4 meson: define 's390' for 's390x' when building BPF objects
The kernel headers match on __s390__ so the build fails

../src/nsresourced/bpf/userns_restrict/userns-restrict.bpf.c:159:6: error: Must specify a BPF target arch via __TARGET_ARCH_xxx
void BPF_KPROBE(userns_restrict_free_user_ns, struct work_struct *work) {
     ^
/usr/include/bpf/bpf_tracing.h:817:20: note: expanded from macro 'BPF_KPROBE'
        return ____##name(___bpf_kprobe_args(args));                        \
                          ^
/usr/include/bpf/bpf_tracing.h:797:41: note: expanded from macro '___bpf_kprobe_args'
                                        ^
/usr/include/bpf/bpf_helpers.h:195:29: note: expanded from macro '___bpf_apply'
                            ^
note: (skipping 2 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
/usr/include/bpf/bpf_tracing.h:789:72: note: expanded from macro '___bpf_kprobe_args1'
                                                                       ^
/usr/include/bpf/bpf_tracing.h:563:29: note: expanded from macro 'PT_REGS_PARM1'
                            ^
<scratch space>:125:6: note: expanded from here
 GCC error "Must specify a BPF target arch via __TARGET_ARCH_xxx"

(cherry picked from commit aab7bb596821e83f736bcb19b5c71ec1b8dc440e)
(cherry picked from commit bd9c837bb733ce516bd31cfd023f83907fe476fc)
2024-05-09 16:39:34 +02:00
Mike Yuan
a32da72cbe journalctl: also check arg_file_stdin with other journal location
options

Prompted by #32491

(cherry picked from commit 821bf13b6e7a20ca05bebad2bc435e40a424ca18)
(cherry picked from commit 2c1ce9f00b189ac03de2501f4a7b4691b2adb55c)
2024-05-09 16:39:34 +02:00
Mathias Lang
2b822b9008 networkd: Correct documentation for LinkLocalAddressing
LinkLocalAddressing accepts a boolean. This can be seen by looking at
`link_local_address_family_from_strong(cont char *s)` in
`src/network/netword-util.c#L102-108` which falls back to
`address_family_from_string`, defined two lines above (L100)
using `DEFINE_STRING_TABLE_LOOKUP_WITH_BOOLEAN`.

(cherry picked from commit 07b6924de4d83c0d66ddfe92d3f2df4995e1e087)
(cherry picked from commit 586e10fa612c4740517acdd67727ed8a4ac9166d)
2024-05-09 16:39:34 +02:00
Arthur Zamarin
863a7bbfbf shell completion: fix machinectl import-{tar,raw}
Signed-off-by: Arthur Zamarin <arthurzam@gentoo.org>
(cherry picked from commit 3eb329bfb5df8f5b6eba9cef195dff54b9ba0e4b)
(cherry picked from commit aff1099b0a4adb9dc7de20fb1914a80f80f88c21)
2024-05-09 16:39:34 +02:00
Mike Yuan
f9e1c4349c mount-setup: fix typo
(cherry picked from commit a0a09da45ee9bd5ba09504d082f2a9c4b9ace759)
(cherry picked from commit 0e607f569116e0802b81e17b8a475d40ce02817f)
2024-05-09 16:39:34 +02:00
Lennart Poettering
13a1d5e705 varlink: make errors returned by verify_unix_socket() systematic
Previously, if we encountered a non-socket fd we'd return ENOTSOCK the
first time, but the subsequent times we'd return ENOMEDIUM, due to
caching. Let's make sure we return the same errors all the the time.

(cherry picked from commit b24c384b5dab5f568a263311f89881dc5c799a3b)
(cherry picked from commit 118a48bdec59db8048ac5f0fcbce3e3ccb2038e4)
2024-05-09 16:39:34 +02:00
Daan De Meyer
a3063577a7 portable: Don't fail if /etc/resolv.conf doesn't exist
The portable profiles assume /etc/resolv.conf exists, which isn't
always the case. Let's mark the mounts as optional so we don't fail
to start the unit if /etc/resolv.conf doesn't exist.

(cherry picked from commit f449a29bb9914f2645f37a3e177afef1e2c0536a)
(cherry picked from commit e3d5e162eb84e5e679159bce20b9a92929f01bbc)
2024-05-09 16:39:34 +02:00
Antonio Alvarez Feijoo
8ca036841a cryptsetup-tokens: fix pin asserts
If a user only presses ENTER when the PIN is requested (without actually typing
the PIN), an assertion is reached and no other unlock method is requested.

```
sh-5.2# systemctl status systemd-cryptsetup@cr_root
× systemd-cryptsetup@cr_root.service - Cryptography Setup for cr_root
     Loaded: loaded (/etc/crypttab; generated)
    Drop-In: /etc/systemd/system/systemd-cryptsetup@.service.d
             └─pcr-signature.conf
     Active: failed (Result: core-dump) since Thu 2024-04-25 08:44:30 UTC; 10min ago
       Docs: man:crypttab(5)
             man:systemd-cryptsetup-generator(8)
             man:systemd-cryptsetup@.service(8)
    Process: 559 ExecStartPre=/usr/bin/pcr-signature.sh (code=exited, status=0/SUCCESS)
    Process: 604 ExecStart=/usr/bin/systemd-cryptsetup attach cr_root /dev/disk/by-uuid/a8cbd937-6975-4e61-9120-ce5c03138700 none x-initrd.attach,tpm2-device=auto (code=dumped, signal=ABRT)
   Main PID: 604 (code=dumped, signal=ABRT)
        CPU: 19ms

Apr 25 08:44:29 localhost systemd[1]: Starting Cryptography Setup for cr_root...
Apr 25 08:44:30 localhost systemd-cryptsetup[604]: Assertion '!pin || pin_size > 0' failed at src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-tpm2.c:60, function cryptsetup_token_open_pin(). Aborting.
Apr 25 08:44:30 localhost systemd[1]: systemd-cryptsetup@cr_root.service: Main process exited, code=dumped, status=6/ABRT
Apr 25 08:44:30 localhost systemd[1]: systemd-cryptsetup@cr_root.service: Failed with result 'core-dump'.
Apr 25 08:44:30 localhost systemd[1]: Failed to start Cryptography Setup for cr_root.
```

In this case, `cryptsetup_token_open_pin()` receives an empty (non-NULL) `pin`
with `pin_size` equals to 0.

```
🔐 Please enter LUKS2 token PIN:

Breakpoint 3, cryptsetup_token_open_pin (cd=0x5555555744c0, token=0, pin=0x5555555b3cc0 "", pin_size=0, ret_password=0x7fffffffd380,
    ret_password_len=0x7fffffffd378, usrptr=0x0) at ../src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-tpm2.c:42
42	                void *usrptr /* plugin defined parameter passed to crypt_activate_by_token*() API */) {
(gdb) continue
Assertion '!pin || pin_size > 0' failed at src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-tpm2.c:60, function cryptsetup_token_open_pin(). Aborting.
```

(cherry picked from commit 5cef6b5393871a99ad17799197b26da9196f7035)
(cherry picked from commit 723a7c8ab5cfc48bfae2f151f3c1d9a145f00b8b)
2024-05-09 16:39:34 +02:00
Mike Yuan
e929b3e4f6 man/systemd.journal-fields: add missing OBJECT_SYSTEMD_INVOCATION_ID
(cherry picked from commit 3cb7fc5fcb486a6ac775d637a7edc46afd312358)
(cherry picked from commit 02015cf563ffa39e8c447bf863dacf6ef8ac044f)
2024-05-09 16:39:34 +02:00
Mike Yuan
9e8116e77a journald-server: drop spuriously doubled '=' for OBJECT_SYSTEMD_INVOCATION_ID
(cherry picked from commit 6cb8286aa3f3cca6cc565942abe8597f35c11a6c)
(cherry picked from commit 9fd78d3052c681d48ce04f13243b962c713d00b3)
2024-05-09 16:39:34 +02:00
Rasmus Villemoes
a0d974a30d systemctl: list-jobs: interchange 'waiting for' and 'blocking' in output
The current output of 'systemctl list-jobs' with the --after and/or --before
switches seems backwards. With artificial units

# check-oil.service
[Unit]
Description=Check the oil level
Before=engine-ready.target

# fill-gas.service
[Unit]
Description=Fill the tank with gasoline
Before=engine-ready.target

# engine-ready.target
[Unit]
Description=The engine is ready

[Unit]
Description=Start the engine!
After=engine-ready.target
Wants=engine-ready.target

running 'systemctl list-jobs --before --after' produces

JOB UNIT                                              TYPE  STATE
93  check-oil.service                                 start running
└─      waiting for job 94 (engine-ready.target/start)   -     -
102 fill-gas.service                                  start running
└─      waiting for job 94 (engine-ready.target/start)   -     -
94  engine-ready.target                               start waiting
└─      waiting for job 111 (start-engine.service/start) -     -
└─      blocking job 93 (check-oil.service/start)        -     -
└─      blocking job 102 (fill-gas.service/start)        -     -
111 start-engine.service                              start waiting
└─      waiting for job 1 (multi-user.target/start)      -     -
└─      blocking job 94 (engine-ready.target/start)      -     -

Obviously, job 93 is not waiting for job 94, but rather blocking it.

(cherry picked from commit dc3058e4901cc26a833da981a18a85563f0d4409)
(cherry picked from commit bf3e64f9d10d31062a18ff4f34c3dc5995218bd6)
2024-05-09 16:39:34 +02:00
Ronan Pigott
37662f9002 resolved: validate authentic insecure delegation to CNAME
If the parent zone uses a non-opt-out method that provides authenticated
negative DS replies, we still can't expect signatures from the child
zone. sd-resolved was using the authenticated status of the DS reply to
require signatures for CNAMEs, even though it had already proved that no
signature exists.

Fixes: 47690634f157 ("resolved: don't request the SOA for every dns label")
(cherry picked from commit 414a9b8e5e1e772261b0ffaedc853f5c0aba5719)
(cherry picked from commit a1580223a5dd67ab61c5f888b114de43b65fffbf)
2024-05-09 16:39:34 +02:00
Ronan Pigott
2ecdb3f5db resolved: probe for dnssec support in allow-downgrade mode
Previously, sd-resolved unnecessarily requested SOA records for each dns
label in the query, even though they are not needed for the chain of
trust. Since 47690634f157, only the necessary records are queried when
validating.

This is actually a problem in allow-downgrade mode, since we will no
longer attempt a query for a record that we know is signed a priori, and
will therefore never update our belief about the state of dnssec support
in the recursive resolver.

Rectify this by reintroducing a query for the root zone SOA in the
allow-downgrade case, specifically to test that the resolver attaches
the RRSIGs which we know must exist.

Fixes: 47690634f157 ("resolved: don't request the SOA for every dns label")
(cherry picked from commit 5237ffdf2b63a5afea77c3470d9981a2c29643cc)
(cherry picked from commit ee15f5efaf2f6cdbb867fca601e92761276e2b1e)
2024-05-09 16:39:34 +02:00
Ronan Pigott
16c79feebf resolved: always progress DS queries
If we request a DS and the resolver offers an unsigned SOA, a new
auxiliary transaction for the DS will be rejected as a loop, and we
might not make any progress toward finding the DS we need. Let's ensure
that we at least always check the parent in this case.

Fixes: 47690634f157 ("resolved: don't request the SOA for every dns label")
(cherry picked from commit d840783db5208219c78d73b9b46ef5daae9fea0a)
(cherry picked from commit 52c17febf14c866d9808d1804f13ac98d76e665b)
2024-05-09 16:39:34 +02:00
Mike Yuan
cf84d7fc3e core/varlink: make sure we setup non-serialized varlink sockets
Before this PR, if m->varlink_server is not yet set up during
deserialization, we call manager_setup_varlink_server rather than
manager_varlink_init, the former of which doesn't setup varlink
addresses, but only binds to methods. This results in that
newly-added varlink addresses not getting created if deserialization
takes place.

Therefore, let's switch to manager_varlink_init, and add some
sanity checks to it in order to prevent listening on the same
address twice.

Fixes #29373

Replaces #29421

(cherry picked from commit 6906c028e83b77b35eaaf87b27d0fe5c6e1984b7)
2024-05-07 23:09:05 +02:00
Frantisek Sumsal
6e992086aa fuzz: don't panic without a C++ compiler
meson's `cpp_args` option is defined only if it detects a C++ compiler,
otherwise we get an error:

../test/fuzz/meson.build:56:28: ERROR: Tried to access unknown option 'cpp_args'.

(cherry picked from commit a3d3bf559c9789c8abe96d931fc5d3f109886db9)
v254.11
2024-04-25 20:06:35 +02:00
Frantisek Sumsal
6a2541eb27 fuzz: pass -Dc_args=/-Dcpp_args= to fuzzer targets
Prompted by #29972, because right now it's practically impossible to pass
-fno-sanitize=function to the fuzzer targets without some extensive
sed'ing.

This splits both c_args and cpp_args to separate arguments for
tools/meson-build.sh, because the other way would be to use `eval`, so
the space-separated but quoted strings passed to these options are not
split where they shouldn't, and I'd rather avoid using `eval` if
possible.

Also, this switches the positional arguments we pass to `meson setup`,
as they were in incorrect order (docs say it should be buildir followed
by sourcedir); meson is apparently clever enough to figure this out and
switch the arguments around if necessary, so it didn't complain.

(cherry picked from commit 17ee59c9c922553a8cb4d54cb8ae415706c4feff)
2024-04-25 20:06:35 +02:00
Luca Boccassi
5459193488 test: disable eexec-oomscoreadjust-negative
This test started failing in GHA, for no obvious reason, and only on this branch
Disable it for now
2024-04-25 20:06:35 +02:00
Lennart Poettering
5750085912 exec-invoke: correct dont_close[] size
THis needs 15 entries as far as I can count, not just 14.

Follow-up for: 5686391b006ee82d8a4559067ad9818e3e631247

Sniff.

(cherry picked from commit 07296542d636dcac43f6c9ee45a638fca8c5f3dd)
(cherry picked from commit 8f4dab049074d31c31af2bb9eb76f9f4f08e3711)
2024-04-25 20:06:35 +02:00
Frantisek Sumsal
8ee9b883e6 test: add test cases for journal corruption on btrfs
For issue #24150 and #31222.

(cherry picked from commit 8cc42169f1f945d286ea334c55e7013d585947d8)
(cherry picked from commit d1a7ffc8b192c1378d07d5ae17eca739fd4ddfc6)
2024-04-25 20:06:35 +02:00
Yu Watanabe
163b932a5c journal-file-util: use COPY_VERIFY_LINKED
As the main thread may call journal_directory_vacuum() ->
unlinkat_deallocate() while another thread is copying the file.

Fixes #24150 and #31222.

(cherry picked from commit 18d4e475c7fad8a5f003e5eb2a9ed0616e0ade20)
(cherry picked from commit 04209567d40b4bf802ac22b631f126aa52647732)
2024-04-25 20:06:35 +02:00
Yu Watanabe
d02215a945 journal-file-util: use the file descriptor of journal file on copy
No effective functionality changed, just refactoring.

(cherry picked from commit f73ad0a9fb18bdba3f0704f5feef2dcbd6130915)
(cherry picked from commit 8ee43d11581f8f8debef9793c7776a584eb4157d)
2024-04-25 20:06:35 +02:00
Yu Watanabe
fea1110aaf copy: introduce COPY_VERIFY_LINKED flag
If the flag is set, then copy_file() and friends check if the source
file still exists when the copy operation finished.

(cherry picked from commit 72ef2a617f43e156dbe15e9fa28b84224c2969ad)
(cherry picked from commit 47c90f516f58b0d4ab2ff3c676e49111e064a149)
2024-04-25 20:06:35 +02:00
Yu Watanabe
801474d195 sd-journal: use stat_verify_linked()
(cherry picked from commit cb0d5f73e600c70026b031cd4046487582ac5452)
(cherry picked from commit aa45d8c39e5b859152ef7191a3a882878959bf90)
2024-04-25 20:06:35 +02:00
Yu Watanabe
614bbcf753 stat-util: introduce {stat,fd}_verify_linked()
(cherry picked from commit a6d0cf939c6aa7c7133122b62e3dd0048bb32e34)
(cherry picked from commit 8b2df85a80c85f8b69fde0154f3870e0dbdcf9b1)
2024-04-25 20:06:35 +02:00
Yu Watanabe
47585937c1 stat-util: rebreak comment
(cherry picked from commit dd7fa015a62385c63daf6152853bb444d63fd9ba)
(cherry picked from commit 93d687888a28d9cd2b88e0116188c9d66d2d31d3)
2024-04-25 20:06:35 +02:00
Yu Watanabe
704dba93c7 copy: use xopenat() to make 'from' argument optional
(cherry picked from commit d1553bfd20b8865178c7f79d60e0491fe58e3209)
(cherry picked from commit 455b4eca2f9cb3aaba3bb2f990ddf452d5fc7c7c)
2024-04-25 20:06:35 +02:00