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$'
This commit is contained in:
Marco d'Itri 2022-01-06 16:04:42 +01:00
parent 5f5ba8312c
commit fb5cc7f4ef

View File

@ -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)