summaryrefslogtreecommitdiff
path: root/libshouldbeinlibc/ugids-verify-auth.c
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1998-08-11 21:28:13 +0000
committerRoland McGrath <roland@gnu.org>1998-08-11 21:28:13 +0000
commit429dca0cae580683aa5dd11b01feba6958744d9e (patch)
treeb2fb35a71aad5c6aa6e82971efe8bbc9df8823c6 /libshouldbeinlibc/ugids-verify-auth.c
parent04f30e7b0af320be243ec1d155febffb769997c0 (diff)
1998-08-11 Roland McGrath <roland@baalperazim.frob.com>
* ugids-verify-auth.c: Leave #include <hurd/password.h> there, but commented out for the time being. (password_check_user, password_check_group): Make symbols weak; these are temporary defns until we get back in synch with libc. * ugids-verify-auth.c (ugids_verify_make_auth): Properly initialize SVMA_STATE members if they will be used.
Diffstat (limited to 'libshouldbeinlibc/ugids-verify-auth.c')
-rw-r--r--libshouldbeinlibc/ugids-verify-auth.c23
1 files changed, 18 insertions, 5 deletions
diff --git a/libshouldbeinlibc/ugids-verify-auth.c b/libshouldbeinlibc/ugids-verify-auth.c
index 26794940..b9c2a63c 100644
--- a/libshouldbeinlibc/ugids-verify-auth.c
+++ b/libshouldbeinlibc/ugids-verify-auth.c
@@ -28,15 +28,22 @@
#include <grp.h>
#include <hurd/paths.h>
+/*#include <hurd/password.h>*/ /* XXX commented out until new libc installed */
#include "ugids.h"
-/* XXXX these are dummies to use until libc gets re-installed. */
+/* XXXX these are dummies to use until libc gets re-installed.
+ The weak symbols should make the real libhurduser.so versions
+ get used as soon as they exist, even though we didn't #include
+ the header. When they are available in a working libc dist,
+ then this page can be removed and the #include above uncommented. */
+#pragma weak password_check_user
error_t
password_check_user (io_t a, uid_t b, const char *c, auth_t *d)
{
return ENOSYS;
}
+#pragma weak password_check_group
error_t
password_check_group (io_t a, uid_t b, const char *c, auth_t *d)
{
@@ -56,7 +63,7 @@ struct svma_state
/* Append the auth ports in AUTHS, of length NUM_AUTHS, to the auth port
vector in SS, returning 0 if successful, or an error. */
-static error_t
+static error_t
svma_state_add_auths (struct svma_state *ss, const auth_t *auths, size_t num_auths)
{
auth_t *new = realloc (ss->auths, ss->num_auths + num_auths);
@@ -114,7 +121,7 @@ ugids_verify_make_auth (const struct ugids *ugids,
{
error_t err;
/* By default, get authentication from the password server. */
- struct svma_state svma_state = { 0 };
+ struct svma_state svma_state;
error_t (*verify_fn) (const char *password,
uid_t id, int is_group,
void *pwd_or_grp, void *hook)
@@ -131,10 +138,16 @@ ugids_verify_make_auth (const struct ugids *ugids,
verify_fn = 0;
verify_hook = 0;
}
+ else
+ {
+ /* Must initialize list to empty so svma_state_add_auths works. */
+ svma_state.auth = NULL;
+ svma_state.nauth = 0;
+ }
/* Check passwords. */
err = ugids_verify (ugids, have_uids, have_gids,
- getpass_fn, getpass_hook, verify_fn, verify_hook);
+ getpass_fn, getpass_hook, verify_fn, verify_hook);
if (! err)
/* The user apparently has access to all the ids, try to grant the
@@ -154,7 +167,7 @@ ugids_verify_make_auth (const struct ugids *ugids,
err =
auth_makeauth (cur_auth,
svma_state.auths, MACH_MSG_TYPE_COPY_SEND,
- svma_state.num_auths,
+ svma_state.num_auths,
ugids->eff_uids.ids, ugids->eff_uids.num,
ugids->avail_uids.ids, ugids->avail_uids.num,
ugids->eff_gids.ids, ugids->eff_gids.num,