ITS#10399 pw-pbkdf2: fix iteration configuration parameter

the first module argument is argc=1 and argv[0], as invoked by
servers/slapd/slappasswd.c/parse_slappasswdopt and
servers/slapd/module.c/module_load
This commit is contained in:
Jonas Jelten 2025-10-17 01:05:10 +02:00
parent b38a17b850
commit c8ed27ebd0

View file

@ -429,13 +429,26 @@ static int pbkdf2_check(
int init_module(int argc, char *argv[]) {
int rc;
if (argc == 2) {
int iter = atoi(argv[1]);
if (iter > 0)
pbkdf2_iteration = iter;
else
if (argc > 0) {
char *endptr = NULL;
int iter = strtol(argv[0], &endptr, 0);
if (strlen(argv[0]) == 0 || *endptr != '\0') {
perror("pw-pbkdf2 rounds argument invalid\n");
return -1;
}
if (iter > 0)
pbkdf2_iteration = iter;
else {
fprintf(stderr, "pw-pbkdf2 rounds must be >= 1");
return -1;
}
}
if (argc > 1) {
fprintf(stderr, "unknown arguments given to pw-pbkdf2\n");
return -1;
}
rc = lutil_passwd_add((struct berval *)&pbkdf2_scheme,
pbkdf2_check, pbkdf2_encrypt);
if(rc) return rc;