Merge pull request #30203 from yuwata/resolve-dump-cache

resolve: fix varlink message verification
This commit is contained in:
Luca Boccassi 2023-11-28 15:35:11 +00:00 committed by GitHub
commit 499d32655f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 63 additions and 17 deletions

View file

@ -25,7 +25,46 @@ VARLINK_DEFINE_STRUCT_TYPE(
VARLINK_DEFINE_FIELD(refresh, VARLINK_INT, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(expire, VARLINK_INT, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(minimum, VARLINK_INT, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(exchange, VARLINK_STRING, VARLINK_NULLABLE));
VARLINK_DEFINE_FIELD(exchange, VARLINK_STRING, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(version, VARLINK_INT, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(size, VARLINK_INT, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(horiz_pre, VARLINK_INT, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(vert_pre, VARLINK_INT, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(latitude, VARLINK_INT, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(longitude, VARLINK_INT, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(altitude, VARLINK_INT, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(keyTag, VARLINK_INT, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(algorithm, VARLINK_INT, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(digestType, VARLINK_INT, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(digest, VARLINK_STRING, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(fptype, VARLINK_INT, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(fingerprint, VARLINK_STRING, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(flags, VARLINK_INT, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(protocol, VARLINK_INT, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(dnskey, VARLINK_STRING, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(signer, VARLINK_STRING, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(typeCovered, VARLINK_INT, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(labels, VARLINK_INT, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(originalTtl, VARLINK_INT, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(expiration, VARLINK_INT, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(inception, VARLINK_INT, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(signature, VARLINK_STRING, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(nextDomain, VARLINK_STRING, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(types, VARLINK_INT, VARLINK_NULLABLE|VARLINK_ARRAY),
VARLINK_DEFINE_FIELD(iterations, VARLINK_INT, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(salt, VARLINK_STRING, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(hash, VARLINK_STRING, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(certUsage, VARLINK_INT, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(selector, VARLINK_INT, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(matchingType, VARLINK_INT, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(data, VARLINK_STRING, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(tag, VARLINK_STRING, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(value, VARLINK_STRING, VARLINK_NULLABLE));
VARLINK_DEFINE_STRUCT_TYPE(
ResourceRecordArray,
VARLINK_DEFINE_FIELD_BY_TYPE(rr, ResourceRecord, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(raw, VARLINK_STRING, 0));
VARLINK_DEFINE_STRUCT_TYPE(
Answer,
@ -48,7 +87,7 @@ VARLINK_DEFINE_METHOD(
VARLINK_DEFINE_STRUCT_TYPE(
CacheEntry,
VARLINK_DEFINE_FIELD_BY_TYPE(key, ResourceKey, 0),
VARLINK_DEFINE_FIELD_BY_TYPE(rrs, ResourceRecord, VARLINK_NULLABLE|VARLINK_ARRAY),
VARLINK_DEFINE_FIELD_BY_TYPE(rrs, ResourceRecordArray, VARLINK_NULLABLE|VARLINK_ARRAY),
VARLINK_DEFINE_FIELD(type, VARLINK_STRING, VARLINK_NULLABLE),
VARLINK_DEFINE_FIELD(until, VARLINK_INT, 0));
@ -127,6 +166,7 @@ VARLINK_DEFINE_INTERFACE(
&vl_method_ResetStatistics,
&vl_type_ResourceKey,
&vl_type_ResourceRecord,
&vl_type_ResourceRecordArray,
&vl_type_Answer,
&vl_type_CacheEntry,
&vl_type_ScopeCache,

View file

@ -12,7 +12,8 @@ static VARLINK_DEFINE_METHOD(
static VARLINK_DEFINE_METHOD(
GetInterfaceDescription,
VARLINK_DEFINE_OUTPUT(interface, VARLINK_STRING, 0));
VARLINK_DEFINE_INPUT(interface, VARLINK_STRING, 0),
VARLINK_DEFINE_OUTPUT(description, VARLINK_STRING, 0));
static VARLINK_DEFINE_ERROR(
InterfaceNotFound,

View file

@ -1929,6 +1929,7 @@ check_result_nspawn_unittests() {
check_coverage_reports "$workspace" || ret=5
save_journal "$workspace/var/log/journal" $ret
echo "${JOURNAL_LIST:-"No journals were saved"}"
_umount_dir "${initdir:?}"
@ -1962,6 +1963,7 @@ check_result_qemu_unittests() {
check_coverage_reports "$initdir" || ret=5
save_journal "$initdir/var/log/journal" $ret
echo "${JOURNAL_LIST:-"No journals were saved"}"
_umount_dir "$initdir"

View file

@ -4,5 +4,3 @@ NotifyAccess=all
FileDescriptorStoreMax=10
FileDescriptorStorePreserve=restart
ExecStart=/usr/lib/systemd/tests/testdata/testsuite-80.units/fdstore-pin.sh 0
StandardOutput=journal+console
StandardError=journal+console

View file

@ -4,5 +4,3 @@ NotifyAccess=all
FileDescriptorStoreMax=10
FileDescriptorStorePreserve=yes
ExecStart=/usr/lib/systemd/tests/testdata/testsuite-80.units/fdstore-pin.sh 1
StandardOutput=journal+console
StandardError=journal+console

View file

@ -14,7 +14,6 @@ ExecStart=sh -xec 'echo 0 >/sys/fs/selinux/enforce; fixfiles -f -F relabel; rm /
Type=oneshot
TimeoutSec=infinity
RemainAfterExit=yes
StandardOutput=journal+console
[Install]
WantedBy=basic.target

View file

@ -7,5 +7,5 @@ OnFailureJobMode=replace-irreversibly
[Service]
Type=oneshot
ExecStart=/bin/sh -x -c 'systemctl poweroff --no-block'
ExecStart=/usr/lib/systemd/tests/testdata/units/end.sh
TimeoutStartSec=5m

10
test/units/end.sh Executable file
View file

@ -0,0 +1,10 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
set -eux
set -o pipefail
(! journalctl -q -o short-monotonic --grep "didn't pass validation" >>/failed)
systemctl poweroff --no-block
exit 0

View file

@ -63,9 +63,6 @@ report_result() {
echo "$name OK"
echo "$name" >>/testok
fi
systemd-cat echo "--- $name ---"
systemd-cat cat "/$name.log"
}
set +x

View file

@ -6,5 +6,3 @@ Description=Tests for systemd-resolved
ExecStartPre=rm -f /failed /testok
ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh
Type=oneshot
StandardOutput=journal+console
StandardError=journal+console

View file

@ -530,6 +530,11 @@ grep -qF "fd00:dead:beef:cafe::123" "$RUN_OUT"
#run dig +dnssec this.does.not.exist.untrusted.test
#grep -qF "status: NXDOMAIN" "$RUN_OUT"
### Test resolvectl show-cache
run resolvectl show-cache
run resolvectl show-cache --json=short
run resolvectl show-cache --json=pretty
# Issue: https://github.com/systemd/systemd/issues/29580 (part #1)
dig @127.0.0.54 signed.test

View file

@ -6,5 +6,3 @@ Description=TEST-80-NOTIFYACCESS
ExecStartPre=rm -f /failed /testok
ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh
Type=oneshot
StandardOutput=journal+console
StandardError=journal+console

View file

@ -65,7 +65,7 @@ EOF
chmod +x "$MYSCRIPT"
MYUNIT="myunit$RANDOM.service"
systemd-run -u "$MYUNIT" -p Type=notify -p StandardOutput=journal+console -p StandardError=journal+console -p FileDescriptorStoreMax=7 "$MYSCRIPT"
systemd-run -u "$MYUNIT" -p Type=notify -p FileDescriptorStoreMax=7 "$MYSCRIPT"
test "$(systemd-analyze fdstore "$MYUNIT" | wc -l)" -eq 2
systemd-analyze fdstore "$MYUNIT" --json=short