From 17122c3de1c60080bfbb190253e3aee653247082 Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Wed, 15 Nov 2023 13:38:02 +0100 Subject: [PATCH 1/3] sd-journal: don't treat invalid match as a programming error Don't use assert_runtime() when we get an invalid match string, since that's a runtime error: $ SYSTEMD_LOG_LEVEL=debug coredumpctl info = ... Adding match: = Assertion 'match_is_valid(data, size)' failed at src/libsystemd/sd-journal/sd-journal.c:240, function sd_journal_add_match(). Ignoring. Failed to add match "=": Invalid argument --- src/libsystemd/sd-journal/sd-journal.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libsystemd/sd-journal/sd-journal.c b/src/libsystemd/sd-journal/sd-journal.c index 73a65da7502..eb35b9d9c47 100644 --- a/src/libsystemd/sd-journal/sd-journal.c +++ b/src/libsystemd/sd-journal/sd-journal.c @@ -235,7 +235,8 @@ _public_ int sd_journal_add_match(sd_journal *j, const void *data, size_t size) if (size == 0) size = strlen(data); - assert_return(match_is_valid(data, size), -EINVAL); + if (!match_is_valid(data, size)) + return -EINVAL; /* level 0: AND term * level 1: OR terms From 6e07f600ba9204d9b01c401b21531ebdba15322e Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Wed, 15 Nov 2023 13:46:09 +0100 Subject: [PATCH 2/3] mount: don't call sd_device_get_property_value() with a NULL pointer Otherwise bad thing would've happened is this was a hard assert: + systemd-mount --umount /dev/loop0 Assertion 'device' failed at src/libsystemd/sd-device/sd-device.c:2202, function sd_device_get_property_value(). Ignoring. --- src/mount/mount-tool.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/mount/mount-tool.c b/src/mount/mount-tool.c index 5876e2ddb47..f626f07af63 100644 --- a/src/mount/mount-tool.c +++ b/src/mount/mount-tool.c @@ -975,7 +975,6 @@ static int stop_mounts( } static int umount_by_device(sd_bus *bus, sd_device *dev) { - _cleanup_(sd_device_unrefp) sd_device *d = NULL; _cleanup_strv_free_ char **list = NULL; const char *v; int r, ret = 0; @@ -983,7 +982,7 @@ static int umount_by_device(sd_bus *bus, sd_device *dev) { assert(bus); assert(dev); - if (sd_device_get_property_value(d, "SYSTEMD_MOUNT_WHERE", &v) >= 0) + if (sd_device_get_property_value(dev, "SYSTEMD_MOUNT_WHERE", &v) >= 0) ret = stop_mounts(bus, v); r = sd_device_get_devname(dev, &v); From 6565b9d0b1bc6074a3b66abd14679fa7bd601fc3 Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Wed, 15 Nov 2023 13:56:50 +0100 Subject: [PATCH 3/3] sd-bus: don't treat invalid user/machine as a programming error $ SYSTEMD_LOG_LEVEL=debug machinectl status --machine=@ Assertion 'r > 0' failed at src/libsystemd/sd-bus/sd-bus.c:1694, function sd_bus_open_system_machine(). Ignoring. --- src/libsystemd/sd-bus/sd-bus.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c index ced4466aa6f..4a0259f8bbd 100644 --- a/src/libsystemd/sd-bus/sd-bus.c +++ b/src/libsystemd/sd-bus/sd-bus.c @@ -1698,8 +1698,8 @@ _public_ int sd_bus_open_system_machine(sd_bus **ret, const char *user_and_machi r = user_and_machine_valid(user_and_machine); if (r < 0) return r; - - assert_return(r > 0, -EINVAL); + if (r == 0) + return -EINVAL; r = sd_bus_new(&b); if (r < 0) @@ -1734,8 +1734,8 @@ _public_ int sd_bus_open_user_machine(sd_bus **ret, const char *user_and_machine r = user_and_machine_valid(user_and_machine); if (r < 0) return r; - - assert_return(r > 0, -EINVAL); + if (r == 0) + return -EINVAL; r = sd_bus_new(&b); if (r < 0)