From: Lennart Poettering Date: Thu, 31 Mar 2022 08:48:37 +0000 (+0200) Subject: cryptsetup: add helper for mangling "none" option strings X-Git-Tag: v251-rc2~236^2~9 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2fabbad8983bf012e73479b73ecd390794080c3d;p=thirdparty%2Fsystemd.git cryptsetup: add helper for mangling "none" option strings let's unify some code here, and let's do so in cryptsetup-util.h so that we can later reuse this in integritysetup/veritysetup --- diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c index 9db3f6f098b..137e7ee95d9 100644 --- a/src/cryptsetup/cryptsetup.c +++ b/src/cryptsetup/cryptsetup.c @@ -1750,8 +1750,8 @@ static int run(int argc, char *argv[]) { volume = argv[2]; source = argv[3]; - key_file = argc >= 5 && !STR_IN_SET(argv[4], "", "-", "none") ? argv[4] : NULL; - options = argc >= 6 && !STR_IN_SET(argv[5], "", "-", "none") ? argv[5] : NULL; + key_file = mangle_none(argc >= 5 ? argv[4] : NULL); + options = mangle_none(argc >= 6 ? argv[5] : NULL); if (!filename_is_valid(volume)) return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Volume name '%s' is not valid.", volume); diff --git a/src/shared/cryptsetup-util.h b/src/shared/cryptsetup-util.h index ff44af84410..2a17820d639 100644 --- a/src/shared/cryptsetup-util.h +++ b/src/shared/cryptsetup-util.h @@ -86,3 +86,8 @@ static inline void sym_crypt_free(struct crypt_device* cd) {} static inline void sym_crypt_freep(struct crypt_device** cd) {} #endif + +static inline const char *mangle_none(const char *s) { + /* A helper that turns cryptsetup/integritysetup/veritysetup "options" strings into NULL if they are effectively empty */ + return isempty(s) || STR_IN_SET(s, "-", "none") ? NULL : s; +}