summaryrefslogtreecommitdiff
path: root/usr/src/cmd/fs.d/autofs/autod_main.c
diff options
context:
space:
mode:
authorsemery <none@none>2007-01-08 22:48:10 -0800
committersemery <none@none>2007-01-08 22:48:10 -0800
commit3bfb48feb84bb78924286a801c68f80198912fa7 (patch)
tree2eb676597d732d4f08c1f4525422532bc9937c5e /usr/src/cmd/fs.d/autofs/autod_main.c
parent3adfa9cd8a85081d32de7091fd58369411b3dade (diff)
downloadillumos-joyent-3bfb48feb84bb78924286a801c68f80198912fa7.tar.gz
6266812 pam_krb5 and pam_krb5_migrate localize their syslog messages
6430941 pam_krb5 pam_sm_setcred can cause /tmp/krb5cc_<PAM_USER> to be owned by euid rather than PAM_USER 6484675 pam_krb5(5) needs some cleanup 6499804 pam_krb5 account management should not return success if user is not defined in kerberos realm 6507080 autofs no longer passing credential information in upcalls
Diffstat (limited to 'usr/src/cmd/fs.d/autofs/autod_main.c')
-rw-r--r--usr/src/cmd/fs.d/autofs/autod_main.c63
1 files changed, 15 insertions, 48 deletions
diff --git a/usr/src/cmd/fs.d/autofs/autod_main.c b/usr/src/cmd/fs.d/autofs/autod_main.c
index ef616f9057..37d18600c1 100644
--- a/usr/src/cmd/fs.d/autofs/autod_main.c
+++ b/usr/src/cmd/fs.d/autofs/autod_main.c
@@ -46,7 +46,6 @@
#include <string.h>
#include <thread.h>
#include <locale.h>
-#include <ucred.h>
#include <door.h>
#include "automount.h"
#include <sys/vfs.h>
@@ -64,17 +63,13 @@
static void autofs_doorfunc(void *, char *, size_t, door_desc_t *, uint_t);
static void autofs_setdoor(int);
-static void autofs_mntinfo_1_r(autofs_lookupargs *,
- autofs_mountres *, ucred_t *);
+static void autofs_mntinfo_1_r(autofs_lookupargs *, autofs_mountres *);
static void autofs_mount_1_free_r(struct autofs_mountres *);
-static void autofs_lookup_1_r(autofs_lookupargs *,
- autofs_lookupres *, ucred_t *);
+static void autofs_lookup_1_r(autofs_lookupargs *, autofs_lookupres *);
static void autofs_lookup_1_free_args(autofs_lookupargs *);
-static void autofs_unmount_1_r(umntrequest *, umntres *,
- ucred_t *);
+static void autofs_unmount_1_r(umntrequest *, umntres *);
static void autofs_unmount_1_free_args(umntrequest *);
-static void autofs_readdir_1_r(autofs_rddirargs *,
- autofs_rddirres *, ucred_t *);
+static void autofs_readdir_1_r(autofs_rddirargs *, autofs_rddirres *);
static void autofs_readdir_1_free_r(struct autofs_rddirres *);
static int decode_args(xdrproc_t, autofs_door_args_t *, caddr_t *, int);
static bool_t encode_res(xdrproc_t, autofs_door_res_t **, caddr_t, int *);
@@ -95,7 +90,6 @@ extern int _autofssys(int, void *);
#define AUTOFS_DOOR "/var/run/autofs_door"
#endif /* DEBUG */
-
static thread_key_t s_thr_key;
struct autodir *dir_head;
@@ -299,14 +293,13 @@ usage()
static void
autofs_readdir_1_r(
autofs_rddirargs *req,
- autofs_rddirres *res,
- ucred_t *autofs_cred)
+ autofs_rddirres *res)
{
if (trace > 0)
trace_prt(1, "READDIR REQUEST : %s @ %ld\n",
req->rda_map, req->rda_offset);
- do_readdir(req, res, autofs_cred);
+ do_readdir(req, res);
if (trace > 0)
trace_prt(1, "READDIR REPLY : status=%d\n",
res->rd_status);
@@ -326,8 +319,7 @@ autofs_readdir_1_free_r(struct autofs_rddirres *res)
static void
autofs_unmount_1_r(
umntrequest *m,
- umntres *res,
- ucred_t *autofs_cred)
+ umntres *res)
{
struct umntrequest *ul;
@@ -357,8 +349,7 @@ autofs_unmount_1_r(
static void
autofs_lookup_1_r(
autofs_lookupargs *m,
- autofs_lookupres *res,
- ucred_t *autofs_cred)
+ autofs_lookupres *res)
{
autofs_action_t action;
struct linka link;
@@ -378,7 +369,7 @@ autofs_lookup_1_r(
bzero(&link, sizeof (struct linka));
status = do_lookup1(m->map, m->name, m->subdir, m->opts, m->path,
- (uint_t)m->isdirect, &action, &link, autofs_cred);
+ (uint_t)m->isdirect, m->uid, &action, &link);
if (status == 0) {
/*
* Return action list to kernel.
@@ -402,8 +393,7 @@ autofs_lookup_1_r(
static void
autofs_mntinfo_1_r(
autofs_lookupargs *m,
- autofs_mountres *res,
- ucred_t *autofs_cred)
+ autofs_mountres *res)
{
int status;
action_list *alp = NULL;
@@ -420,7 +410,7 @@ autofs_mntinfo_1_r(
}
status = do_mount1(m->map, m->name, m->subdir, m->opts, m->path,
- (uint_t)m->isdirect, &alp, autofs_cred, DOMOUNT_USER);
+ (uint_t)m->isdirect, m->uid, &alp, DOMOUNT_USER);
if (status != 0) {
/*
* An error occurred, free action list if allocated.
@@ -671,12 +661,6 @@ autofs_doorfunc(
autofs_door_res_t *door_res;
autofs_door_res_t failed_res;
- /*
- * autofs_cred is nulled because door_cred assumes non-null
- * to have been previously allocated.
- */
- ucred_t *autofs_cred = NULL;
-
if (arg_size < sizeof (autofs_door_args_t)) {
failed_res.res_status = EINVAL;
error = door_return((char *)&failed_res,
@@ -689,19 +673,6 @@ autofs_doorfunc(
return;
}
- error = door_ucred(&autofs_cred);
- if (error) {
- failed_res.res_status = error;
- error = door_return((char *)&failed_res,
- sizeof (autofs_door_res_t), NULL, 0);
- /*
- * If we got here, door_return() failed
- */
- syslog(LOG_ERR, "Bad cred, door_return() failed, %d",
- error);
- return;
- }
-
timenow = time((time_t *)NULL);
which = ((autofs_door_args_t *)argp)->cmd;
@@ -720,7 +691,7 @@ autofs_doorfunc(
}
bzero(&lookup_res, sizeof (autofs_lookupres));
- autofs_lookup_1_r(xdrargs, &lookup_res, autofs_cred);
+ autofs_lookup_1_r(xdrargs, &lookup_res);
autofs_lookup_1_free_args(xdrargs);
free(xdrargs);
@@ -751,8 +722,7 @@ autofs_doorfunc(
break;
}
- autofs_mntinfo_1_r((autofs_lookupargs *)xdrargs,
- &mount_res, autofs_cred);
+ autofs_mntinfo_1_r((autofs_lookupargs *)xdrargs, &mount_res);
autofs_lookup_1_free_args(xdrargs);
free(xdrargs);
@@ -790,8 +760,7 @@ autofs_doorfunc(
break;
}
- autofs_unmount_1_r(umnt_args,
- &umount_res, autofs_cred);
+ autofs_unmount_1_r(umnt_args, &umount_res);
error = umount_res.status;
@@ -826,7 +795,7 @@ autofs_doorfunc(
break;
}
- autofs_readdir_1_r(rddir_args, &rddir_res, autofs_cred);
+ autofs_readdir_1_r(rddir_args, &rddir_res);
free(rddir_args->rda_map);
free(rddir_args);
@@ -847,7 +816,6 @@ autofs_doorfunc(
break;
#ifdef MALLOC_DEBUG
case AUTOFS_DUMP_DEBUG:
- ucred_free(autofs_cred);
check_leaks("/var/tmp/automountd.leak");
error = door_return(NULL, 0, NULL, 0);
/*
@@ -867,7 +835,6 @@ autofs_doorfunc(
res_size = sizeof (autofs_door_res_t);
break;
}
- ucred_free(autofs_cred);
error = door_return(res, res_size, NULL, 0);
/*
* If we got here, door_return failed.