Проверял на FreeBSD 6.0-RELEASE.Не работает :(
int is_password_correct(char *username, char *password)
{
int result;
do {
pam_handle_t * pamh;
result = pam_start("ftpd", username, NULL, &pamh);
if( result != PAM_SUCCESS )
{
printf("PAM Error: %s\n", pam_strerror(pamh, result) );
break;
}
result = pam_set_item(pamh, PAM_AUTHTOK, password);
if( result != PAM_SUCCESS )
{
printf("PAM Error: %s\n", pam_strerror(pamh, result) );
break;
}
result = pam_authenticate(pamh, PAM_SILENT);
pam_end(pamh, PAM_SUCCESS);
if( result != PAM_SUCCESS )
{
printf("PAM Error: %s\n", pam_strerror(pamh, result) );
break;
}
} while(false);
return result;
}
В чём могут быть грабли?