fix doors support, fix signedness warnings
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@15278 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -363,7 +363,7 @@ do_request(void *buf, size_t len, struct descr *d)
|
|||||||
len[2] = (reply.length >> 8) & 0xff;
|
len[2] = (reply.length >> 8) & 0xff;
|
||||||
len[3] = reply.length & 0xff;
|
len[3] = reply.length & 0xff;
|
||||||
|
|
||||||
iov[0].iov_base = len;
|
iov[0].iov_base = (void*)len;
|
||||||
iov[0].iov_len = 4;
|
iov[0].iov_len = 4;
|
||||||
iov[1].iov_base = reply.data;
|
iov[1].iov_base = reply.data;
|
||||||
iov[1].iov_len = reply.length;
|
iov[1].iov_len = reply.length;
|
||||||
@@ -532,13 +532,14 @@ handle_stream(struct descr *d, int index, int min_free)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_DOORS
|
#ifdef HAVE_DOOR_CREATE
|
||||||
|
|
||||||
void
|
void
|
||||||
kcm_door_server(void *cookie, char *argp, size_t arg_size,
|
kcm_door_server(void *cookie, char *argp, size_t arg_size,
|
||||||
door_desc_t *dp, uint_t n_desc)
|
door_desc_t *dp, uint_t n_desc)
|
||||||
{
|
{
|
||||||
kcm_client peercred;
|
kcm_client peercred;
|
||||||
|
door_cred_t cred;
|
||||||
krb5_error_code ret;
|
krb5_error_code ret;
|
||||||
krb5_data reply;
|
krb5_data reply;
|
||||||
size_t length;
|
size_t length;
|
||||||
@@ -549,16 +550,16 @@ kcm_door_server(void *cookie, char *argp, size_t arg_size,
|
|||||||
p = NULL;
|
p = NULL;
|
||||||
length = 0;
|
length = 0;
|
||||||
|
|
||||||
if (door_cred(&info) != 0) {
|
if (door_cred(&cred) != 0) {
|
||||||
kcm_log(0, "door_cred failed with %s", strerror(errno));
|
kcm_log(0, "door_cred failed with %s", strerror(errno));
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
peercred.uid = info.dc_euid;
|
peercred.uid = cred.dc_euid;
|
||||||
peercred.gid = info.dc_egid;
|
peercred.gid = cred.dc_egid;
|
||||||
peercred.pid = info.dc_pid;
|
peercred.pid = cred.dc_pid;
|
||||||
|
|
||||||
ret = process_request(buf, len, &reply, &peercred);
|
ret = process_request((unsigned char*)argp, arg_size, &reply, &peercred);
|
||||||
if (reply.length != 0) {
|
if (reply.length != 0) {
|
||||||
p = alloca(reply.length); /* XXX don't use alloca */
|
p = alloca(reply.length); /* XXX don't use alloca */
|
||||||
if (p) {
|
if (p) {
|
||||||
@@ -569,11 +570,9 @@ kcm_door_server(void *cookie, char *argp, size_t arg_size,
|
|||||||
}
|
}
|
||||||
|
|
||||||
out:
|
out:
|
||||||
return door_return(p, length, NULL, 0);
|
door_return(p, length, NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *door_path;
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
kcm_setup_door(void)
|
kcm_setup_door(void)
|
||||||
{
|
{
|
||||||
@@ -600,7 +599,7 @@ kcm_setup_door(void)
|
|||||||
krb5_err(kcm_context, 1, errno, "Failed to attach door");
|
krb5_err(kcm_context, 1, errno, "Failed to attach door");
|
||||||
|
|
||||||
}
|
}
|
||||||
#endif /* HAVE_DOORS */
|
#endif /* HAVE_DOOR_CREATE */
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -609,7 +608,7 @@ kcm_loop(void)
|
|||||||
struct descr *d;
|
struct descr *d;
|
||||||
int ndescr;
|
int ndescr;
|
||||||
|
|
||||||
#ifdef HAVE_DOORS
|
#ifdef HAVE_DOOR_CREATE
|
||||||
kcm_setup_door();
|
kcm_setup_door();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user