summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--utils/setauth.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/utils/setauth.c b/utils/setauth.c
index 92b6816a..a039e3c6 100644
--- a/utils/setauth.c
+++ b/utils/setauth.c
@@ -56,6 +56,7 @@ void
main (int argc, char *argv[])
{
error_t err;
+ auth_t auth; /* Authority to make changes. */
int save = 0, keep = 0;
struct idvec have_uids = IDVEC_INIT, have_gids = IDVEC_INIT;
struct frobauth frobauth = FROBAUTH_INIT;
@@ -119,13 +120,14 @@ main (int argc, char *argv[])
error (52, err, "Cannot get invoking authentication");
/* Check passwords. */
- err = ugids_verify (&frobauth.ugids, &have_uids, &have_gids, 0);
- if (err == EINVAL)
+ err = ugids_verify_make_auth (&frobauth.ugids, &have_uids, &have_gids, 0, 0,
+ 0, 0, &auth);
+ if (err == EACCES)
error (15, 0, "Invalid password");
else if (err)
- error (16, err, "Cannot verify authentication");
+ error (16, err, "Authentication failure");
- if (frobauth_modify (&frobauth, modify, print_info, 0))
+ if (frobauth_modify (&frobauth, &auth, 1, modify, print_info, 0))
exit (0);
else
exit (1);