summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Dickson <steved@redhat.com>2009-07-09 15:53:08 -0400
committerSteve Dickson <steved@redhat.com>2009-07-09 15:53:08 -0400
commit8717a2cff3ad6a4023b45864912987d831cd5f0b (patch)
tree61efd0b8cfe02bd70eb57d09bc5b2b8a6751e109
parent5851af9f3362bd3ffd742d6e4a1eb87002a18dfc (diff)
downloadti-rpc-8717a2cff3ad6a4023b45864912987d831cd5f0b.tar.gz
Added HAVE_LIBGSSAPI defines around gss codelibtirpc-0-2-1-rc3
so the --disble-gss configure option would work Renamed configure.in to configure.ac so the HAVE_LIBGSSAPI define would be defined in the correct place. Clean up warnings when --enable-gss is used. Signed-off-by: Steve Dickson <steved@redhat.com>
-rw-r--r--configure.ac (renamed from configure.in)1
-rw-r--r--src/authgss_prot.c20
-rw-r--r--src/svc.c10
-rw-r--r--src/svc_auth_gss.c2
4 files changed, 19 insertions, 14 deletions
diff --git a/configure.in b/configure.ac
index bacb265..df50e94 100644
--- a/configure.in
+++ b/configure.ac
@@ -10,6 +10,7 @@ AC_ARG_ENABLE(gss,[ --enable-gss Turn on gss api], [case "${enableva
esac],[gss=false])
AM_CONDITIONAL(GSS, test x$gss = xtrue)
if test x$gss = xtrue; then
+ AC_DEFINE(HAVE_LIBGSSAPI, 1, [])
PKG_CHECK_MODULES(GSSGLUE, libgssglue, [],
AC_MSG_ERROR([Unable to locate information required to use libgssglue.]))
fi
diff --git a/src/authgss_prot.c b/src/authgss_prot.c
index be0d1a6..ab72d91 100644
--- a/src/authgss_prot.c
+++ b/src/authgss_prot.c
@@ -54,7 +54,7 @@ xdr_rpc_gss_cred(XDR *xdrs, struct rpc_gss_cred *p)
xdr_u_int(xdrs, &p->gc_seq) &&
xdr_enum(xdrs, (enum_t *)&p->gc_svc) &&
xdr_bytes(xdrs, (char **)&p->gc_ctx.value,
- &p->gc_ctx.length, MAX_AUTH_BYTES));
+ (u_int *)&p->gc_ctx.length, MAX_AUTH_BYTES));
log_debug("xdr_rpc_gss_cred: %s %s "
"(v %d, proc %d, seq %d, svc %d, ctx %p:%d)",
@@ -72,7 +72,7 @@ xdr_rpc_gss_init_args(XDR *xdrs, gss_buffer_desc *p)
bool_t xdr_stat;
xdr_stat = xdr_bytes(xdrs, (char **)&p->value,
- &p->length, MAX_NETOBJ_SZ);
+ (u_int *)&p->length, MAX_NETOBJ_SZ);
log_debug("xdr_rpc_gss_init_args: %s %s (token %p:%d)",
(xdrs->x_op == XDR_ENCODE) ? "encode" : "decode",
@@ -88,12 +88,12 @@ xdr_rpc_gss_init_res(XDR *xdrs, struct rpc_gss_init_res *p)
bool_t xdr_stat;
xdr_stat = (xdr_bytes(xdrs, (char **)&p->gr_ctx.value,
- &p->gr_ctx.length, MAX_NETOBJ_SZ) &&
+ (u_int *)&p->gr_ctx.length, MAX_NETOBJ_SZ) &&
xdr_u_int(xdrs, &p->gr_major) &&
xdr_u_int(xdrs, &p->gr_minor) &&
xdr_u_int(xdrs, &p->gr_win) &&
xdr_bytes(xdrs, (char **)&p->gr_token.value,
- &p->gr_token.length, MAX_NETOBJ_SZ));
+ (u_int *)&p->gr_token.length, MAX_NETOBJ_SZ));
log_debug("xdr_rpc_gss_init_res %s %s "
"(ctx %p:%d, maj %d, min %d, win %d, token %p:%d)",
@@ -135,7 +135,7 @@ xdr_rpc_gss_wrap_data(XDR *xdrs, xdrproc_t xdr_func, caddr_t xdr_ptr,
if (svc == RPCSEC_GSS_SVC_INTEGRITY) {
/* Marshal databody_integ length. */
XDR_SETPOS(xdrs, start);
- if (!xdr_u_int(xdrs, &databuf.length))
+ if (!xdr_u_int(xdrs, (u_int *)&databuf.length))
return (FALSE);
/* Checksum rpc_gss_data_t. */
@@ -148,7 +148,7 @@ xdr_rpc_gss_wrap_data(XDR *xdrs, xdrproc_t xdr_func, caddr_t xdr_ptr,
/* Marshal checksum. */
XDR_SETPOS(xdrs, end);
xdr_stat = xdr_bytes(xdrs, (char **)&wrapbuf.value,
- &wrapbuf.length, MAX_NETOBJ_SZ);
+ (u_int *)&wrapbuf.length, MAX_NETOBJ_SZ);
gss_release_buffer(&min_stat, &wrapbuf);
}
else if (svc == RPCSEC_GSS_SVC_PRIVACY) {
@@ -162,7 +162,7 @@ xdr_rpc_gss_wrap_data(XDR *xdrs, xdrproc_t xdr_func, caddr_t xdr_ptr,
/* Marshal databody_priv. */
XDR_SETPOS(xdrs, start);
xdr_stat = xdr_bytes(xdrs, (char **)&wrapbuf.value,
- &wrapbuf.length, MAX_NETOBJ_SZ);
+ (u_int *)&wrapbuf.length, MAX_NETOBJ_SZ);
gss_release_buffer(&min_stat, &wrapbuf);
}
return (xdr_stat);
@@ -188,13 +188,13 @@ xdr_rpc_gss_unwrap_data(XDR *xdrs, xdrproc_t xdr_func, caddr_t xdr_ptr,
if (svc == RPCSEC_GSS_SVC_INTEGRITY) {
/* Decode databody_integ. */
- if (!xdr_bytes(xdrs, (char **)&databuf.value, &databuf.length,
+ if (!xdr_bytes(xdrs, (char **)&databuf.value, (u_int *)&databuf.length,
MAX_NETOBJ_SZ)) {
log_debug("xdr decode databody_integ failed");
return (FALSE);
}
/* Decode checksum. */
- if (!xdr_bytes(xdrs, (char **)&wrapbuf.value, &wrapbuf.length,
+ if (!xdr_bytes(xdrs, (char **)&wrapbuf.value, (u_int *)&wrapbuf.length,
MAX_NETOBJ_SZ)) {
gss_release_buffer(&min_stat, &databuf);
log_debug("xdr decode checksum failed");
@@ -213,7 +213,7 @@ xdr_rpc_gss_unwrap_data(XDR *xdrs, xdrproc_t xdr_func, caddr_t xdr_ptr,
}
else if (svc == RPCSEC_GSS_SVC_PRIVACY) {
/* Decode databody_priv. */
- if (!xdr_bytes(xdrs, (char **)&wrapbuf.value, &wrapbuf.length,
+ if (!xdr_bytes(xdrs, (char **)&wrapbuf.value, (u_int *)&wrapbuf.length,
MAX_NETOBJ_SZ)) {
log_debug("xdr decode databody_priv failed");
return (FALSE);
diff --git a/src/svc.c b/src/svc.c
index a61c14b..cc65e6a 100644
--- a/src/svc.c
+++ b/src/svc.c
@@ -77,7 +77,9 @@ static struct svc_callout
extern rwlock_t svc_lock;
extern rwlock_t svc_fd_lock;
+#ifdef HAVE_LIBGSSAPI
extern struct svc_auth_ops svc_auth_gss_ops;
+#endif
static struct svc_callout *svc_find (rpcprog_t, rpcvers_t,
struct svc_callout **, char *);
@@ -715,9 +717,11 @@ svc_getreq_common (fd)
SVC_DESTROY (xprt);
break;
}
- else if ((xprt->xp_auth != NULL) &&
- (xprt->xp_auth->svc_ah_ops != &svc_auth_gss_ops))
- {
+ else if ((xprt->xp_auth != NULL)
+#ifdef HAVE_LIBGSSAPI
+ && (xprt->xp_auth->svc_ah_ops != &svc_auth_gss_ops)
+#endif
+ ) {
xprt->xp_auth = NULL;
}
}
diff --git a/src/svc_auth_gss.c b/src/svc_auth_gss.c
index 9e9ff81..54b23b1 100644
--- a/src/svc_auth_gss.c
+++ b/src/svc_auth_gss.c
@@ -121,7 +121,7 @@ svcauth_gss_import_name(char *service)
namebuf.length = strlen(service);
maj_stat = gss_import_name(&min_stat, &namebuf,
- GSS_C_NT_HOSTBASED_SERVICE, &name);
+ (gss_OID)GSS_C_NT_HOSTBASED_SERVICE, &name);
if (maj_stat != GSS_S_COMPLETE) {
log_status("gss_import_name", maj_stat, min_stat);