From fb5cc7f4efc6b1a1f5aa658d3cb63caae8a5c44a Mon Sep 17 00:00:00 2001 From: Marco d'Itri Date: Thu, 6 Jan 2022 16:04:42 +0100 Subject: [PATCH] mkpasswd: allow providing a partial salt string To support commands like: mkpasswd --method=yescrypt abc 'j9T$NLTnlHlt6cj0lkSizrMNN.' mkpasswd --method=sha-256 abc 'rounds=3000$NhJ78pg4LKwQ9cOJ$' --- mkpasswd.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/mkpasswd.c b/mkpasswd.c index 426e93a..5a6a10c 100644 --- a/mkpasswd.c +++ b/mkpasswd.c @@ -284,7 +284,14 @@ int main(int argc, char *argv[]) if (salt_arg && salt_arg[0] == '$') salt = NOFAIL(strdup(salt_arg)); - else if (salt_arg && salt_arg[0] != '\0') { + else if (salt_prefix && salt_arg && strchr(salt_arg, '$')) { + salt = NOFAIL(malloc(strlen(salt_prefix) + strlen(rounds_str) + + strlen(salt_arg) + 1)); + *salt = '\0'; + strcat(salt, salt_prefix); + strcat(salt, rounds_str); + strcat(salt, salt_arg); + } else if (salt_arg && salt_arg[0] != '\0') { unsigned int c = strlen(salt_arg); if (c < salt_minlen || c > salt_maxlen) { if (salt_minlen == salt_maxlen)