Fixes for Heimdal (macOS) builds from Stefan.
[mech_eap.git] / mech_eap / util.h
index 7734a55..bf3a25a 100644 (file)
@@ -71,6 +71,9 @@
 #include <errno.h>
 
 #include <krb5.h>
+#ifndef HAVE_HEIMDAL_VERSION
+#include "gssapi_headerfix.h"
+#endif
 
 #ifdef WIN32
 # ifndef __cplusplus
@@ -376,6 +379,8 @@ gssEapDeriveRfc3961Key(OM_uint32 *minor,
 
 #ifdef HAVE_HEIMDAL_VERSION
 
+#include <der.h>
+
 #define KRB_TIME_FOREVER        ((time_t)~0L)
 
 #define KRB_KEY_TYPE(key)       ((key)->keytype)
@@ -404,6 +409,11 @@ gssEapDeriveRfc3961Key(OM_uint32 *minor,
         (cksum)->checksum.data = (d)->value;        \
     } while (0)
 
+#define KRB_CHECKSUM_FREE(ctx, cksum)          do { \
+        der_free_octet_string(&(cksum)->checksum);  \
+        memset((cksum), 0, sizeof(*(cksum)));       \
+    } while (0)
+                                    
 #else
 
 #define KRB_TIME_FOREVER        KRB5_INT32_MAX
@@ -440,6 +450,8 @@ gssEapDeriveRfc3961Key(OM_uint32 *minor,
         (cksum)->contents = (d)->value;             \
     } while (0)
 
+#define KRB_CHECKSUM_FREE(ctx, cksum) krb5_free_checksum_contents((ctx), (cksum))
+
 #endif /* HAVE_HEIMDAL_VERSION */
 
 #define KRB_KEY_INIT(key)       do {        \
@@ -662,17 +674,8 @@ duplicateOidSet(OM_uint32 *minor,
                 const gss_OID_set src,
                 gss_OID_set *dst);
 
-static inline int
-oidEqual(const gss_OID_desc *o1, const gss_OID_desc *o2)
-{
-    if (o1 == GSS_C_NO_OID)
-        return (o2 == GSS_C_NO_OID);
-    else if (o2 == GSS_C_NO_OID)
-        return (o1 == GSS_C_NO_OID);
-    else
-        return (o1->length == o2->length &&
-                memcmp(o1->elements, o2->elements, o1->length) == 0);
-}
+extern int
+oidEqual(const gss_OID_desc *o1, const gss_OID_desc *o2);
 
 /* util_ordering.c */
 OM_uint32