[patch 3/10] Fix problems with 64-bit big-endian machines

kwc at citi.umich.edu kwc at citi.umich.edu
Mon Jul 3 18:34:05 EDT 2006


Signed-off-by: Kevin Coffman <kwc at citi.umich.edu>

Correct the definition of mech_used in the gss context to use gss_OID_desc.
This fixes problems on 64-bit machines when referencing the OID.

Also updates write_buffer function to use u_int rather than size_t when
doing calculations.


---

 nfs-utils-1.0.8-kwc/utils/gssd/context_mit.c |    6 +++---
 nfs-utils-1.0.8-kwc/utils/gssd/write_bytes.h |    2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff -puN utils/gssd/context_mit.c~gssd_64bit_bigendian utils/gssd/context_mit.c
--- nfs-utils-1.0.8/utils/gssd/context_mit.c~gssd_64bit_bigendian	2006-07-03 16:47:36.403094000 -0400
+++ nfs-utils-1.0.8-kwc/utils/gssd/context_mit.c	2006-07-03 16:47:36.692919000 -0400
@@ -86,7 +86,7 @@ typedef struct _krb5_gss_ctx_id_rec {
    uint64_t seq_recv;		/* gssint_uint64 */
    void *seqstate;
    krb5_auth_context auth_context;
-   gss_buffer_desc *mech_used;	/* gss_OID_desc */
+   gss_OID_desc *mech_used;	/* gss_OID_desc */
     /* Protocol spec revision
        0 => RFC 1964 with 3DES and RC4 enhancements
        1 => draft-ietf-krb-wg-gssapi-cfx-01
@@ -123,7 +123,7 @@ typedef struct _krb5_gss_ctx_id_rec {
 	int established;
 	int big_endian;
 	krb5_auth_context auth_context;
-	gss_buffer_desc *mech_used;
+	gss_OID_desc *mech_used;
 	int nctypes;
 	krb5_cksumtype *ctypes;
 } krb5_gss_ctx_id_rec, *krb5_gss_ctx_id_t;
@@ -343,7 +343,7 @@ serialize_krb5_ctx(gss_ctx_id_t ctx, gss
 	if (WRITE_BYTES(&p, end, kctx->endtime)) goto out_err;
 	word_seq_send = kctx->seq_send;
 	if (WRITE_BYTES(&p, end, word_seq_send)) goto out_err;
-	if (write_buffer(&p, end, kctx->mech_used)) goto out_err;
+	if (write_oid(&p, end, kctx->mech_used)) goto out_err;
 
 	printerr(2, "serialize_krb5_ctx: serializing keys with "
 		 "enctype %d and length %d\n",
diff -puN utils/gssd/write_bytes.h~gssd_64bit_bigendian utils/gssd/write_bytes.h
--- nfs-utils-1.0.8/utils/gssd/write_bytes.h~gssd_64bit_bigendian	2006-07-03 16:47:36.421076000 -0400
+++ nfs-utils-1.0.8-kwc/utils/gssd/write_bytes.h	2006-07-03 16:47:36.547949000 -0400
@@ -56,7 +56,7 @@ write_buffer(char **p, char *end, gss_bu
 	int len = (int)arg->length;		/* make an int out of size_t */
 	if (WRITE_BYTES(p, end, len))
 		return -1;
-	if (*p + arg->length > end)
+	if (*p + len > end)
 		return -1;
 	memcpy(*p, arg->value, len);
 	*p += len;

_


More information about the NFSv4 mailing list