diff options
author | Lennart Poettering <lennart@poettering.net> | 2023-01-20 15:36:09 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2023-01-21 10:45:25 +0100 |
commit | 7153213e406815ae0083789c211d8b77c79588d5 (patch) | |
tree | ae980516803b4a2bb512d9ffaa88148e66f1ec62 /src/cryptsetup/cryptsetup-tokens | |
parent | 9e2e3342ca5d219085c8f00ef0c2209f0d9b48ec (diff) | |
download | systemd-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.c | 20 |
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); } |