From 24e91e08f8958241195f97472353adef94884b33 Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Thu, 4 May 2023 16:56:28 +0200 Subject: [PATCH] core: check the unit type more thoroughly when deserializing Resolves: #27523 --- src/core/unit.c | 4 +++- ...ase-minimized-fuzz-manager-serialize-6207619447259136.fuzz | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 test/fuzz/fuzz-manager-serialize/clusterfuzz-testcase-minimized-fuzz-manager-serialize-6207619447259136.fuzz diff --git a/src/core/unit.c b/src/core/unit.c index c7635a291c5..4e9ae6148f3 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -6162,7 +6162,9 @@ int activation_details_deserialize(const char *key, const char *value, Activatio return -EINVAL; t = unit_type_from_string(value); - if (t == _UNIT_TYPE_INVALID) + /* The activation details vtable has defined ops only for path + * and timer units */ + if (!IN_SET(t, UNIT_PATH, UNIT_TIMER)) return -EINVAL; *details = malloc0(activation_details_vtable[t]->object_size); diff --git a/test/fuzz/fuzz-manager-serialize/clusterfuzz-testcase-minimized-fuzz-manager-serialize-6207619447259136.fuzz b/test/fuzz/fuzz-manager-serialize/clusterfuzz-testcase-minimized-fuzz-manager-serialize-6207619447259136.fuzz new file mode 100644 index 00000000000..b3f5c9bae32 --- /dev/null +++ b/test/fuzz/fuzz-manager-serialize/clusterfuzz-testcase-minimized-fuzz-manager-serialize-6207619447259136.fuzz @@ -0,0 +1,4 @@ + +d.socket +job +activation-details-unit-type=service \ No newline at end of file