summaryrefslogtreecommitdiff
path: root/src/cryptsetup/cryptsetup-tokens
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2023-01-20 15:36:09 +0100
committerLennart Poettering <lennart@poettering.net>2023-01-21 10:45:25 +0100
commit7153213e406815ae0083789c211d8b77c79588d5 (patch)
treeae980516803b4a2bb512d9ffaa88148e66f1ec62 /src/cryptsetup/cryptsetup-tokens
parent9e2e3342ca5d219085c8f00ef0c2209f0d9b48ec (diff)
downloadsystemd-7153213e406815ae0083789c211d8b77c79588d5.tar.gz
string-util: add common implementation of function that converts sized character buffers to NUL terminated C strings
Diffstat (limited to 'src/cryptsetup/cryptsetup-tokens')
-rw-r--r--src/cryptsetup/cryptsetup-tokens/cryptsetup-token-util.c20
1 files changed, 3 insertions, 17 deletions
diff --git a/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-util.c b/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-util.c
index e305d8ba79..4e3090bc92 100644
--- a/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-util.c
+++ b/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-util.c
@@ -58,27 +58,13 @@ int crypt_dump_hex_string(const char *hex_str, char **ret_dump_str) {
}
int crypt_normalize_pin(const void *pin, size_t pin_size, char **ret_pin_string) {
-
- _cleanup_free_ char *pin_string = NULL;
-
- assert(pin || !pin_size);
+ assert(pin || pin_size == 0);
assert(ret_pin_string);
- if (!pin) {
+ if (pin_size == 0) {
*ret_pin_string = NULL;
return 0;
}
- /* Refuse embedded NULL bytes, but allow trailing NULL */
- if (memchr(pin, 0, pin_size - 1))
- return -EINVAL;
-
- /* Enforce trailing NULL byte if missing */
- pin_string = memdup_suffix0(pin, pin_size);
- if (!pin_string)
- return -ENOMEM;
-
- *ret_pin_string = TAKE_PTR(pin_string);
-
- return 0;
+ return make_cstring(pin, pin_size, MAKE_CSTRING_ALLOW_TRAILING_NUL, ret_pin_string);
}