summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libshouldbeinlibc/ugids-verify.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/libshouldbeinlibc/ugids-verify.c b/libshouldbeinlibc/ugids-verify.c
index b2400bec..f9d45c63 100644
--- a/libshouldbeinlibc/ugids-verify.c
+++ b/libshouldbeinlibc/ugids-verify.c
@@ -30,15 +30,22 @@
#include "ugids.h"
/* Verify that we have the right to the ids in UGIDS, given that we already
- possess those in HAVE_UIDS and HAVE_GIDS, asking for passwords (with
- GETPASS, which defaults to the standard libc function getpass) where
+ possess those in HAVE_UIDS and HAVE_GIDS, asking for passwords where
necessary. 0 is returned if access should be allowed, otherwise
EINVAL if an incorrect password was entered, or an error relating to
- resource failure. */
+ resource failure. The GETPASS_FN, GETPASS_HOOK, VERIFY_FN, and
+ VERIFY_HOOK arguments are as for the idvec_verify function (in <idvec.h>). */
error_t
ugids_verify (const struct ugids *ugids,
const struct idvec *have_uids, const struct idvec *have_gids,
- char *(*getpass_fn)(const char *prompt))
+ char *(*getpass_fn) (const char *prompt,
+ uid_t id, int is_group,
+ void *pwd_or_grp, void *hook),
+ void *getpass_hook,
+ error_t (*verify_fn) (const char *password,
+ uid_t id, int is_group,
+ void *pwd_or_grp, void *hook),
+ void *verify_hook)
{
error_t err;
struct idvec check_uids = IDVEC_INIT; /* User-ids to verify. */
@@ -54,7 +61,7 @@ ugids_verify (const struct ugids *ugids,
if (! err)
err = idvec_verify (&check_uids, &check_gids, have_uids, have_gids,
- getpass_fn);
+ getpass_fn, getpass_hook, verify_fn, verify_hook);
idvec_fini (&check_uids);
idvec_fini (&check_gids);