]> err.no Git - linux-2.6/blobdiff - net/sunrpc/auth_gss/gss_krb5_seal.c
SUNRPC,RPCSEC_GSS: remove unnecessary kmalloc of a checksum
[linux-2.6] / net / sunrpc / auth_gss / gss_krb5_seal.c
index 2511834e6e52a4ee63c7b65bef729c7a214d4aa1..58f9721980e2f7836887af5ea4cac3a1b656d8be 100644 (file)
 #endif
 
 u32
-krb5_make_token(struct krb5_ctx *ctx, int qop_req,
-                  struct xdr_buf *text, struct xdr_netobj *token)
+gss_get_mic_kerberos(struct gss_ctx *gss_ctx, struct xdr_buf *text,
+               struct xdr_netobj *token)
 {
+       struct krb5_ctx         *ctx = gss_ctx->internal_ctx_id;
        s32                     checksum_type;
-       struct xdr_netobj       md5cksum = {.len = 0, .data = NULL};
+       char                    cksumdata[16];
+       struct xdr_netobj       md5cksum = {.len = 0, .data = cksumdata};
        unsigned char           *ptr, *krb5_hdr, *msg_start;
        s32                     now;
 
@@ -83,9 +85,6 @@ krb5_make_token(struct krb5_ctx *ctx, int qop_req,
 
        now = get_seconds();
 
-       if (qop_req != 0)
-               goto out_err;
-
        switch (ctx->signalg) {
                case SGN_ALG_DES_MAC_MD5:
                        checksum_type = CKSUMTYPE_RSA_MD5;
@@ -116,8 +115,8 @@ krb5_make_token(struct krb5_ctx *ctx, int qop_req,
        *(u16 *)(krb5_hdr + 2) = htons(ctx->signalg);
        memset(krb5_hdr + 4, 0xff, 4);
 
-       if (make_checksum(checksum_type, krb5_hdr, 8, text, &md5cksum))
-               goto out_err;
+       if (make_checksum(checksum_type, krb5_hdr, 8, text, 0, &md5cksum))
+                       goto out_err;
 
        switch (ctx->signalg) {
        case SGN_ALG_DES_MAC_MD5:
@@ -135,8 +134,6 @@ krb5_make_token(struct krb5_ctx *ctx, int qop_req,
                BUG();
        }
 
-       kfree(md5cksum.data);
-
        if ((krb5_make_seq_num(ctx->seq, ctx->initiate ? 0 : 0xff,
                               ctx->seq_send, krb5_hdr + 16, krb5_hdr + 8)))
                goto out_err;
@@ -145,6 +142,5 @@ krb5_make_token(struct krb5_ctx *ctx, int qop_req,
 
        return ((ctx->endtime < now) ? GSS_S_CONTEXT_EXPIRED : GSS_S_COMPLETE);
 out_err:
-       if (md5cksum.data) kfree(md5cksum.data);
        return GSS_S_FAILURE;
 }