More careful matching of alloc/free functions
authorLuke Howard <lukeh@padl.com>
Fri, 16 Sep 2011 14:02:34 +0000 (00:02 +1000)
committerLuke Howard <lukeh@padl.com>
Fri, 16 Sep 2011 14:28:43 +0000 (00:28 +1000)
mech_eap/util_attr.cpp
mech_eap/util_krb.c
mech_eap/util_name.c
mech_eap/util_radius.cpp

index acd7a8f..3bfe785 100644 (file)
@@ -52,6 +52,8 @@ GSSEAP_ONCE_CALLBACK(gssEapAttrProvidersInitInternal)
 
     GSSEAP_ASSERT(gssEapAttrProvidersInitStatus == GSS_S_UNAVAILABLE);
 
+    json_set_alloc_funcs(GSSEAP_MALLOC, GSSEAP_FREE);
+
     major = gssEapRadiusAttrProviderInit(&minor);
     if (GSS_ERROR(major))
         goto cleanup;
index db6e4fb..ce3d0f6 100644 (file)
@@ -68,12 +68,11 @@ initKrbContext(krb5_context *pKrbContext)
     *pKrbContext = krbContext;
 
 cleanup:
+    krb5_free_default_realm(krbContext, defaultRealm);
+
     if (code != 0 && krbContext != NULL)
         krb5_free_context(krbContext);
 
-    if (defaultRealm != NULL)
-        GSSEAP_FREE(defaultRealm);
-
     return code;
 }
 
@@ -462,7 +461,7 @@ krbMakeAuthDataKdcIssued(krb5_context context,
     if (code != 0)
         goto cleanup;
 
-    GSSEAP_FREE(buf);
+    free(buf); /* match ASN1_MALLOC_ENCODE */
     buf = NULL;
 
     ASN1_MALLOC_ENCODE(AD_KDCIssued, buf, buf_size, &kdcIssued, &len, code);
@@ -479,7 +478,7 @@ krbMakeAuthDataKdcIssued(krb5_context context,
 
 cleanup:
     if (buf != NULL)
-        GSSEAP_FREE(buf);
+        free(buf); /* match ASN1_MALLOC_ENCODE */
     if (crypto != NULL)
         krb5_crypto_destroy(context, crypto);
     free_Checksum(&kdcIssued.ad_checksum);
index 187d444..a014bbe 100644 (file)
@@ -206,7 +206,7 @@ importServiceName(OM_uint32 *minor,
     }
 
     if (realm != NULL)
-        GSSEAP_FREE(realm);
+        krb5_free_default_realm(krbContext, realm);
     GSSEAP_FREE(service);
 
     return major;
@@ -272,7 +272,7 @@ importEapNameFlags(OM_uint32 *minor,
 #endif
 
         if (defaultRealm != NULL)
-            GSSEAP_FREE(defaultRealm);
+            krb5_free_default_realm(krbContext, defaultRealm);
     }
 
     if (nameBuffer != GSS_C_NO_BUFFER)
index 76fba7b..a23d93d 100644 (file)
@@ -809,7 +809,7 @@ gss_eap_radius_attr_provider::initWithJsonObject(const gss_eap_attr_ctx *ctx,
         pNext = &vp->next;
     }
 
-    m_authenticated = obj["authenticated"].integer();
+    m_authenticated = obj["authenticated"].integer() ? true : false;
 
     return true;
 }