]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
util: add capsule-util.[ch] with helpers for capsules
authorLennart Poettering <lennart@poettering.net>
Tue, 7 Nov 2023 17:19:25 +0000 (18:19 +0100)
committerLennart Poettering <lennart@poettering.net>
Thu, 14 Mar 2024 10:34:04 +0000 (11:34 +0100)
For now, there's only a routine for validating capsule names. More will
be added later.

src/shared/capsule-util.c [new file with mode: 0644]
src/shared/capsule-util.h [new file with mode: 0644]
src/shared/meson.build

diff --git a/src/shared/capsule-util.c b/src/shared/capsule-util.c
new file mode 100644 (file)
index 0000000..3689a78
--- /dev/null
@@ -0,0 +1,17 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+#include "capsule-util.h"
+#include "path-util.h"
+#include "user-util.h"
+
+int capsule_name_is_valid(const char *name) {
+
+        if (!filename_is_valid(name))
+                return false;
+
+        _cleanup_free_ char *prefixed = strjoin("c-", name);
+        if (!prefixed)
+                return -ENOMEM;
+
+        return valid_user_group_name(prefixed, /* flags= */ 0);
+}
diff --git a/src/shared/capsule-util.h b/src/shared/capsule-util.h
new file mode 100644 (file)
index 0000000..437153b
--- /dev/null
@@ -0,0 +1,4 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#pragma once
+
+int capsule_name_is_valid(const char *name);
index d540631f211dfe11058c6fd408b57be8f7eade9a..11f2b5ade91b89d1a4c13f98dd1ebe10a07f1e0a 100644 (file)
@@ -140,6 +140,7 @@ shared_sources = files(
         'pkcs11-util.c',
         'plymouth-util.c',
         'pretty-print.c',
+        'capsule-util.c',
         'ptyfwd.c',
         'qrcode-util.c',
         'quota-util.c',