Whamcloud - gitweb
LU-4629 gss: fix incorrect memset size
[fs/lustre-release.git] / lustre / utils / gss / context_lucid.c
index 7eba6b6..3b2d90b 100644 (file)
@@ -90,7 +90,6 @@ prepare_krb5_rfc1964_buffer(gss_krb5_lucid_context_v1_t *lctx,
        gss_krb5_lucid_key_t enc_key;
        int i;
        char *skd, *dkd;
-       gss_buffer_desc fakeoid;
 
        /*
         * The new Kerberos interface to get the gss context
@@ -100,7 +99,6 @@ prepare_krb5_rfc1964_buffer(gss_krb5_lucid_context_v1_t *lctx,
         * interface to the kernel.
         */
        memset(&enc_key, 0, sizeof(enc_key));
-       memset(&fakeoid, 0, sizeof(fakeoid));
 
        if (!(buf->value = calloc(1, MAX_CTX_LEN)))
                goto out_err;
@@ -146,20 +144,20 @@ prepare_krb5_rfc1964_buffer(gss_krb5_lucid_context_v1_t *lctx,
        dkd = (char *) enc_key.data;
        for (i = 0; i < enc_key.length; i++)
                dkd[i] = skd[i] ^ 0xf0;
-       if (write_lucid_keyblock(&p, end, &enc_key)) {
-               free(enc_key.data);
+       if (write_lucid_keyblock(&p, end, &enc_key))
                goto out_err;
-       }
-       free(enc_key.data);
-
        if (write_lucid_keyblock(&p, end, &lctx->rfc1964_kd.ctx_key))
                goto out_err;
+       free(enc_key.data);
 
        buf->length = p - (char *)buf->value;
        return 0;
 out_err:
        printerr(0, "ERROR: failed serializing krb5 context for kernel\n");
-       if (buf->value) free(buf->value);
+       if (buf->value) {
+               free(buf->value);
+               buf->value = NULL;
+       }
        buf->length = 0;
        if (enc_key.data) free(enc_key.data);
        return -1;
@@ -204,15 +202,15 @@ enum seal_alg {
  * We don't have "legal" access to these MIT-only
  * structures located in libk5crypto
  */
-extern void krb5int_enc_arcfour;
-extern void krb5int_enc_des3;
-extern void krb5int_enc_aes128;
-extern void krb5int_enc_aes256;
+extern void *krb5int_enc_arcfour;
+extern void *krb5int_enc_des3;
+extern void *krb5int_enc_aes128;
+extern void *krb5int_enc_aes256;
 
 static void
 key_lucid_to_krb5(const gss_krb5_lucid_key_t *lin, krb5_keyblock *kout)
 {
-       memset(kout, '\0', sizeof(kout));
+       memset(kout, 0, sizeof(*kout));
 #ifdef HAVE_KRB5
        kout->enctype = lin->type;
        kout->length = lin->length;
@@ -227,7 +225,7 @@ key_lucid_to_krb5(const gss_krb5_lucid_key_t *lin, krb5_keyblock *kout)
 static void
 key_krb5_to_lucid(const krb5_keyblock *kin, gss_krb5_lucid_key_t *lout)
 {
-       memset(lout, '\0', sizeof(lout));
+       memset(lout, 0, sizeof(*lout));
 #ifdef HAVE_KRB5
        lout->type = kin->enctype;
        lout->length = kin->length;