]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
Merge pull request #30203 from yuwata/resolve-dump-cache
authorLuca Boccassi <bluca@debian.org>
Tue, 28 Nov 2023 15:35:11 +0000 (15:35 +0000)
committerGitHub <noreply@github.com>
Tue, 28 Nov 2023 15:35:11 +0000 (15:35 +0000)
resolve: fix varlink message verification

13 files changed:
src/shared/varlink-io.systemd.Resolve.Monitor.c
src/shared/varlink-org.varlink.service.c
test/test-functions
test/testsuite-80.units/fdstore-nopin.service
test/testsuite-80.units/fdstore-pin.service
test/units/autorelabel.service
test/units/end.service
test/units/end.sh [new file with mode: 0755]
test/units/testsuite-02.sh
test/units/testsuite-75.service
test/units/testsuite-75.sh
test/units/testsuite-80.service
test/units/testsuite-80.sh

index 179b9bcf1e2f9831c7bc737c471c7449145d45aa..d95b613eafb05fdf377881ec8e57241d8461d28e 100644 (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,
index 36dc68fd262a7e18a1c77cdad8e1bcf6c06928a1..e5122c08be12e1fd97d366ee6db928eb12da4bd8 100644 (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,
index b054892e172d60bc28b2c83e7d489a43b7e17082..556346d7d57d1fb1d2308d5d52b818495dd3ece3 100644 (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"
 
index 58a687a411c160392086ce1c6f188eb40346b82c..29ffd23033637598d85926012ca44387d3a95365 100644 (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
index bc78ee0a4cbbf072326a6918f59100bc3363b710..913daa2725bde5b66595497efadde7c2a3883675 100644 (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
index dd0df8161bfa60eaf21b438b6cb2e189e3a116be..7e5f9a2b89bdc9ad8805ad9038d3960c72689edb 100644 (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
index 3626741258ae4e032dec24297623ce2246635199..50a68b9dd49d8f00ef34aa4e168b3bf9203398a2 100644 (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
diff --git a/test/units/end.sh b/test/units/end.sh
new file mode 100755 (executable)
index 0000000..dd50654
--- /dev/null
@@ -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
index 210bfcbad2fd5021acf0d65887c7d95d3339de5b..2a3cb08c43caedc4bc95222adf7238000ebaba99 100755 (executable)
@@ -63,9 +63,6 @@ report_result() {
         echo "$name OK"
         echo "$name" >>/testok
     fi
-
-    systemd-cat echo "--- $name ---"
-    systemd-cat cat "/$name.log"
 }
 
 set +x
index 1b0cd56ee45a30f911744e72ab2fea9799872b6d..111cde30ee22d09f4173eec654f57938dd6c2818 100644 (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
index 94321ca7e5f9e4de9f9947b5d32023ccba4e8a87..064dd3807a95bac2cba582adf87c28e3c355c502 100755 (executable)
@@ -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
 
index 82b08a1c8b0601f0c62e8f13f674250145ceaa97..4c7f5d5ebd3ac9dfdc815db0be4752de68bee185 100644 (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
index faadb555b10f4184a11aa468ec1bb34ec15a8054..97b222a9e8932f3758317548648aabcde76822dd 100755 (executable)
@@ -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