s4:heimdal: import lorikeet-heimdal-201101310455 (commit aa88eb1a05c4985cc23fb65fc1ba...
authorAndrew Bartlett <abartlet@samba.org>
Mon, 31 Jan 2011 04:59:06 +0000 (15:59 +1100)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 2 Feb 2011 04:19:03 +0000 (15:19 +1100)
54 files changed:
source4/heimdal/base/baselocl.h
source4/heimdal/base/heimbase.c
source4/heimdal/base/heimbase.h
source4/heimdal/base/string.c
source4/heimdal/base/version-script.map
source4/heimdal/kdc/version-script.map
source4/heimdal/lib/com_err/lex.c
source4/heimdal/lib/com_err/lex.h
source4/heimdal/lib/com_err/lex.l
source4/heimdal/lib/com_err/parse.c
source4/heimdal/lib/com_err/parse.y
source4/heimdal/lib/gssapi/gssapi/gssapi.h
source4/heimdal/lib/gssapi/krb5/cfx.c
source4/heimdal/lib/gssapi/mech/context.c
source4/heimdal/lib/gssapi/mech/cred.h
source4/heimdal/lib/gssapi/mech/gss_accept_sec_context.c
source4/heimdal/lib/gssapi/mech/gss_acquire_cred.c
source4/heimdal/lib/gssapi/mech/gss_add_cred.c
source4/heimdal/lib/gssapi/mech/gss_aeap.c
source4/heimdal/lib/gssapi/mech/gss_canonicalize_name.c
source4/heimdal/lib/gssapi/mech/gss_compare_name.c
source4/heimdal/lib/gssapi/mech/gss_cred.c
source4/heimdal/lib/gssapi/mech/gss_display_name.c
source4/heimdal/lib/gssapi/mech/gss_duplicate_name.c
source4/heimdal/lib/gssapi/mech/gss_export_name.c
source4/heimdal/lib/gssapi/mech/gss_import_name.c
source4/heimdal/lib/gssapi/mech/gss_indicate_mechs.c
source4/heimdal/lib/gssapi/mech/gss_init_sec_context.c
source4/heimdal/lib/gssapi/mech/gss_inquire_cred.c
source4/heimdal/lib/gssapi/mech/gss_inquire_cred_by_mech.c
source4/heimdal/lib/gssapi/mech/gss_inquire_cred_by_oid.c
source4/heimdal/lib/gssapi/mech/gss_inquire_mechs_for_name.c
source4/heimdal/lib/gssapi/mech/gss_krb5.c
source4/heimdal/lib/gssapi/mech/gss_mech_switch.c
source4/heimdal/lib/gssapi/mech/gss_mo.c
source4/heimdal/lib/gssapi/mech/gss_names.c
source4/heimdal/lib/gssapi/mech/gss_release_cred.c
source4/heimdal/lib/gssapi/mech/gss_release_name.c
source4/heimdal/lib/gssapi/mech/gss_set_cred_option.c
source4/heimdal/lib/gssapi/mech/mech_switch.h
source4/heimdal/lib/gssapi/mech/mechqueue.h
source4/heimdal/lib/gssapi/mech/name.h
source4/heimdal/lib/hdb/hdb.h
source4/heimdal/lib/hx509/crypto.c
source4/heimdal/lib/hx509/hx509.h
source4/heimdal/lib/hx509/hx_locl.h
source4/heimdal/lib/hx509/version-script.map
source4/heimdal/lib/krb5/config_file.c
source4/heimdal/lib/krb5/crypto-algs.c
source4/heimdal/lib/krb5/keytab.c
source4/heimdal/lib/krb5/keytab_any.c
source4/heimdal/lib/krb5/pkinit.c
source4/heimdal/lib/roken/roken-common.h
source4/heimdal/lib/roken/roken.h.in

index 5f157264c186e1e48e35de0cf168e5c0fd5aada5..b3c81b9460e8261ee161c46b49b78152d232237c 100644 (file)
@@ -106,11 +106,6 @@ heim_base_atomic_dec(heim_base_atomic_type *x)
 /* tagged strings/object/XXX */
 #define heim_base_is_tagged(x) (((uintptr_t)(x)) & 0x3)
 
-#define heim_base_is_tagged_string(x) ((((uintptr_t)(x)) & 0x3) == 2)
-#define heim_base_make_tagged_string_ptr(x) ((heim_object_t)(((uintptr_t)(x)) | 2))
-#define heim_base_tagged_string_ptr(x) ((char *)(((uintptr_t)(x)) & (~3)))
-
-
 #define heim_base_is_tagged_object(x) ((((uintptr_t)(x)) & 0x3) == 1)
 #define heim_base_make_tagged_object(x, tid) \
     ((heim_object_t)((((uintptr_t)(x)) << 5) | ((tid) << 2) | 0x1))
index b8d5d74a9aa605684dd19e90c0e320071fc98a66..7031af9e49806ad7a483d57d66053ce0c7de4515 100644 (file)
@@ -159,8 +159,6 @@ _heim_get_isa(heim_object_t ptr)
     if (heim_base_is_tagged(ptr)) {
        if (heim_base_is_tagged_object(ptr))
            return tagged_isa[heim_base_tagged_object_tid(ptr)];
-       if (heim_base_is_tagged_string(ptr))
-           return &_heim_string_object;
        heim_abort("not a supported tagged type");
     }
     p = PTR2BASE(ptr);
index 17eb12ea5ea20ecea92e71614f6fb5dca59f3690..d1ca5aa89968e991438c61acea06e2a2fc4f50a1 100644 (file)
@@ -146,7 +146,6 @@ void        heim_dict_delete_key(heim_dict_t, heim_object_t);
 typedef struct heim_string_data *heim_string_t;
 
 heim_string_t heim_string_create(const char *);
-heim_string_t heim_string_create_with_static(const char *);
 heim_tid_t heim_string_get_type_id(void);
 const char * heim_string_get_utf8(heim_string_t);
 
index 414a9161fa7780146749b1f5c79c5dfeab8d6381..11e8841153bf7bddc3fdcc9dc6b20637a43b6804 100644 (file)
@@ -44,31 +44,20 @@ string_dealloc(void *ptr)
 static int
 string_cmp(void *a, void *b)
 {
-    if (heim_base_is_tagged_string(a))
-       a = heim_base_tagged_string_ptr(a);
-    if (heim_base_is_tagged_string(b))
-       b = heim_base_tagged_string_ptr(b);
-
     return strcmp(a, b);
 }
 
 static unsigned long
 string_hash(void *ptr)
 {
-    const char *s;
+    const char *s = ptr;
     unsigned long n;
 
-    if (heim_base_is_tagged_string(ptr))
-       s = heim_base_tagged_string_ptr(ptr);
-    else
-       s = ptr;
-
     for (n = 0; *s; ++s)
        n += *s;
     return n;
 }
 
-
 struct heim_type_data _heim_string_object = {
     HEIM_TID_STRING,
     "string-object",
@@ -99,26 +88,6 @@ heim_string_create(const char *string)
     return s;
 }
 
-/**
- * Create a string object from a strings allocated in the text segment.
- *
- * Note that static string object wont be auto released with
- * heim_auto_release(), the allocation policy of the string must
- * be manged separately from the returned object. This make this
- * function not very useful for strings in allocated from heap or
- * stack. In that case you should use heim_string_create().
- *
- * @param string the string to create, must be an utf8 string
- *
- * @return string object
- */
-
-heim_string_t
-heim_string_create_with_static(const char *string)
-{
-    return heim_base_make_tagged_string_ptr(string);
-}
-
 /**
  * Return the type ID of string objects
  *
index 9886943df12063d104d75196c107df440245e869..007052baeb0f7e252db1bdb99413efb83ee26f2c 100644 (file)
@@ -12,6 +12,7 @@ HEIMDAL_BASE_1.0 {
                heim_auto_release_create;
                heim_auto_release_drain;
                heim_base_once_f;
+               heim_cmp;
                heim_dict_add_value;
                heim_dict_copy_value;
                heim_dict_create;
@@ -22,7 +23,6 @@ HEIMDAL_BASE_1.0 {
                heim_string_create;
                heim_string_get_utf8;
                heim_number_create;
-               heim_string_create_with_static;
        local:
                *;
 };
index 8234ee2ef41e97d0af41e4469f57db0762b7c9d4..ae16f39faad6fee01cc6b265421fa7e279587bf4 100644 (file)
@@ -16,6 +16,10 @@ HEIMDAL_KDC_1.0 {
                krb5_kdc_save_request;
                krb5_kdc_update_time;
                krb5_kdc_pk_initialize;
+
+               # needed for digest-service
+               _kdc_db_fetch;
+               _kdc_free_ent;
        local:
                *;
 };
index f107bba5bd586934e41072bd8925aa9b6bea09ad..9a61f5902b013ebea6fdb673eff4bb1376f270b0 100644 (file)
@@ -1860,7 +1860,7 @@ getstring(void)
            continue;
        }
        if(c == '\n'){
-           lex_error_message("unterminated string");
+           _lex_error_message("unterminated string");
            lineno++;
            break;
        }
@@ -1880,7 +1880,7 @@ getstring(void)
 }
 
 void
-lex_error_message (const char *format, ...)
+_lex_error_message (const char *format, ...)
 {
      va_list args;
 
index 6c9be77ddfc786aa470dc66e809589703e7cd1c4..e158816bbb6ba5bdbb63f97fe59f6777ae462836 100644 (file)
@@ -33,7 +33,7 @@
 
 /* $Id$ */
 
-void lex_error_message (const char *, ...)
+void _lex_error_message (const char *, ...)
 __attribute__ ((format (printf, 1, 2)));
 
 int yylex(void);
index ac660a1d8ca24ecabd3d40883b6e29443584a1dc..eb39e0cfb832681b2fb263bee4f18c1c488adeb5 100644 (file)
@@ -95,7 +95,7 @@ getstring(void)
            continue;
        }
        if(c == '\n'){
-           lex_error_message("unterminated string");
+           _lex_error_message("unterminated string");
            lineno++;
            break;
        }
@@ -115,7 +115,7 @@ getstring(void)
 }
 
 void
-lex_error_message (const char *format, ...)
+_lex_error_message (const char *format, ...)
 {
      va_list args;
 
index b2b0fc10905b26dbb3875abb19a62ea6bc816a92..a97c56f0b219749717e24fae1b27561f72ef48bf 100644 (file)
@@ -291,7 +291,7 @@ name2number(const char *str)
 void
 yyerror (char *s)
 {
-     lex_error_message ("%s\n", s);
+     _lex_error_message ("%s\n", s);
 }
 #line 296 ""
 /* allocate initial stack or double stack size, up to YYMAXDEPTH */
index f628e8804fbe9e2cc3b1299cfe0194b6a8ebc3b3..194965c3495f01bbf11134b6264f5cc1385d3b8a 100644 (file)
@@ -170,5 +170,5 @@ name2number(const char *str)
 void
 yyerror (char *s)
 {
-     lex_error_message ("%s\n", s);
+     _lex_error_message ("%s\n", s);
 }
index 12833ebe149d4b1812001c0b42aa4bba16ff29e9..c67b0a80d7e08376bab03c10a29be75a81785e7a 100644 (file)
@@ -261,9 +261,12 @@ typedef OM_uint32 gss_qop_t;
 #define GSS_IOV_BUFFER_TYPE_STREAM 10
 #define GSS_IOV_BUFFER_TYPE_SIGN_ONLY 11
 
-#define GSS_IOV_BUFFER_TYPE_FLAG_MASK 0xffff0000
-#define GSS_IOV_BUFFER_TYPE_FLAG_ALLOCATE 0x00010000
-#define GSS_IOV_BUFFER_TYPE_FLAG_ALLOCATED 0x00020000
+#define GSS_IOV_BUFFER_TYPE_FLAG_MASK          0xffff0000
+#define GSS_IOV_BUFFER_FLAG_ALLOCATE           0x00010000
+#define GSS_IOV_BUFFER_FLAG_ALLOCATED          0x00020000
+
+#define GSS_IOV_BUFFER_TYPE_FLAG_ALLOCATE      0x00010000 /* old name */
+#define GSS_IOV_BUFFER_TYPE_FLAG_ALLOCATED     0x00020000 /* old name */
 
 #define GSS_IOV_BUFFER_TYPE(_t) ((_t) & ~GSS_IOV_BUFFER_TYPE_FLAG_MASK)
 #define GSS_IOV_BUFFER_FLAGS(_t) ((_t) & GSS_IOV_BUFFER_TYPE_FLAG_MASK)
index 1a6e975279b3d55188dc2db7423f9dea3fb6c972..1189718adcf38b0f8156f8e9567e2e92f914fa4d 100755 (executable)
@@ -216,7 +216,7 @@ _gk_find_buffer(gss_iov_buffer_desc *iov, int iov_count, OM_uint32 type)
 OM_uint32
 _gk_allocate_buffer(OM_uint32 *minor_status, gss_iov_buffer_desc *buffer, size_t size)
 {
-    if (buffer->type & GSS_IOV_BUFFER_TYPE_FLAG_ALLOCATED) {
+    if (buffer->type & GSS_IOV_BUFFER_FLAG_ALLOCATED) {
        if (buffer->buffer.length == size)
            return GSS_S_COMPLETE;
        free(buffer->buffer.value);
@@ -228,7 +228,7 @@ _gk_allocate_buffer(OM_uint32 *minor_status, gss_iov_buffer_desc *buffer, size_t
        *minor_status = ENOMEM;
        return GSS_S_FAILURE;
     }
-    buffer->type |= GSS_IOV_BUFFER_TYPE_FLAG_ALLOCATED;
+    buffer->type |= GSS_IOV_BUFFER_FLAG_ALLOCATED;
 
     return GSS_S_COMPLETE;
 }
@@ -391,7 +391,7 @@ _gssapi_wrap_cfx_iov(OM_uint32 *minor_status,
            rrc -= ec;
        gsshsize += gsstsize;
        gsstsize = 0;
-    } else if (GSS_IOV_BUFFER_FLAGS(trailer->type) & GSS_IOV_BUFFER_TYPE_FLAG_ALLOCATE) {
+    } else if (GSS_IOV_BUFFER_FLAGS(trailer->type) & GSS_IOV_BUFFER_FLAG_ALLOCATE) {
        major_status = _gk_allocate_buffer(minor_status, trailer, gsstsize);
        if (major_status)
            goto failure;
@@ -406,7 +406,7 @@ _gssapi_wrap_cfx_iov(OM_uint32 *minor_status,
      *
      */
 
-    if (GSS_IOV_BUFFER_FLAGS(header->type) & GSS_IOV_BUFFER_TYPE_FLAG_ALLOCATE) {
+    if (GSS_IOV_BUFFER_FLAGS(header->type) & GSS_IOV_BUFFER_FLAG_ALLOCATE) {
        major_status = _gk_allocate_buffer(minor_status, header, gsshsize);
        if (major_status != GSS_S_COMPLETE)
            goto failure;
index 96e5edc32b7db4b56aa967c2bf6c3849aa99d53c..5ea0ac466b7614798762fc7768ec05746b6501fd 100644 (file)
@@ -85,17 +85,19 @@ _gss_mg_get_error(const gss_OID mech, OM_uint32 type,
     case GSS_C_GSS_CODE: {
        if (value != mg->maj_stat || mg->maj_error.length == 0)
            break;
-       string->value = malloc(mg->maj_error.length);
+       string->value = malloc(mg->maj_error.length + 1);
        string->length = mg->maj_error.length;
        memcpy(string->value, mg->maj_error.value, mg->maj_error.length);
+        ((char *) string->value)[string->length] = '\0';
        return GSS_S_COMPLETE;
     }
     case GSS_C_MECH_CODE: {
        if (value != mg->min_stat || mg->min_error.length == 0)
            break;
-       string->value = malloc(mg->min_error.length);
+       string->value = malloc(mg->min_error.length + 1);
        string->length = mg->min_error.length;
        memcpy(string->value, mg->min_error.value, mg->min_error.length);
+        ((char *) string->value)[string->length] = '\0';
        return GSS_S_COMPLETE;
     }
     }
index 01bd882ddaa24076b309853f186fedaadd10a29e..adffe6893e5af6114959d9e5a72e88337f734179 100644 (file)
  */
 
 struct _gss_mechanism_cred {
-       SLIST_ENTRY(_gss_mechanism_cred) gmc_link;
+       HEIM_SLIST_ENTRY(_gss_mechanism_cred) gmc_link;
        gssapi_mech_interface   gmc_mech;       /* mechanism ops for MC */
        gss_OID                 gmc_mech_oid;   /* mechanism oid for MC */
        gss_cred_id_t           gmc_cred;       /* underlying MC */
 };
-SLIST_HEAD(_gss_mechanism_cred_list, _gss_mechanism_cred);
+HEIM_SLIST_HEAD(_gss_mechanism_cred_list, _gss_mechanism_cred);
 
 struct _gss_cred {
        struct _gss_mechanism_cred_list gc_mc;
index 19f3bc4bf84be10ccdcad68219071c40e5bd717a..92d7e7f05d7c9fbaf48142d00df5fcdb0b9513fe 100644 (file)
@@ -209,7 +209,7 @@ gss_accept_sec_context(OM_uint32 *minor_status,
        }
 
        if (cred) {
-               SLIST_FOREACH(mc, &cred->gc_mc, gmc_link)
+               HEIM_SLIST_FOREACH(mc, &cred->gc_mc, gmc_link)
                        if (mc->gmc_mech == m)
                                break;
                if (!mc) {
@@ -285,7 +285,7 @@ gss_accept_sec_context(OM_uint32 *minor_status,
                                gss_delete_sec_context(&junk, context_handle, NULL);
                                return (GSS_S_FAILURE);
                        }
-                       SLIST_INIT(&dcred->gc_mc);
+                       HEIM_SLIST_INIT(&dcred->gc_mc);
                        dmc = malloc(sizeof(struct _gss_mechanism_cred));
                        if (!dmc) {
                                free(dcred);
@@ -296,7 +296,7 @@ gss_accept_sec_context(OM_uint32 *minor_status,
                        dmc->gmc_mech = m;
                        dmc->gmc_mech_oid = &m->gm_mech_oid;
                        dmc->gmc_cred = delegated_mc;
-                       SLIST_INSERT_HEAD(&dcred->gc_mc, dmc, gmc_link);
+                       HEIM_SLIST_INSERT_HEAD(&dcred->gc_mc, dmc, gmc_link);
 
                        *delegated_cred_handle = (gss_cred_id_t) dcred;
                }
index 416407a7bfe7efdb47407d4f876ab30fab37e930..c9900148c2681e0e71f078168cf52b47d44ada49 100644 (file)
@@ -90,7 +90,7 @@ gss_acquire_cred(OM_uint32 *minor_status,
                *minor_status = ENOMEM;
                return (GSS_S_FAILURE);
        }
-       SLIST_INIT(&cred->gc_mc);
+       HEIM_SLIST_INIT(&cred->gc_mc);
 
        if (mechs == GSS_C_NO_OID_SET)
                mechs = _gss_mech_oids;
@@ -145,14 +145,14 @@ gss_acquire_cred(OM_uint32 *minor_status,
                        }
                }
 
-               SLIST_INSERT_HEAD(&cred->gc_mc, mc, gmc_link);
+               HEIM_SLIST_INSERT_HEAD(&cred->gc_mc, mc, gmc_link);
        }
 
        /*
         * If we didn't manage to create a single credential, return
         * an error.
         */
-       if (!SLIST_FIRST(&cred->gc_mc)) {
+       if (!HEIM_SLIST_FIRST(&cred->gc_mc)) {
                free(cred);
                if (actual_mechs)
                        gss_release_oid_set(minor_status, actual_mechs);
index 56fb8ec6a9eccb714d2332034dc6bb4d81aff615..19deea5b062b9fc8b88b8325bf08211e88c63452 100644 (file)
@@ -106,7 +106,7 @@ gss_add_cred(OM_uint32 *minor_status,
                *minor_status = ENOMEM;
                return (GSS_S_FAILURE);
        }
-       SLIST_INIT(&new_cred->gc_mc);
+       HEIM_SLIST_INIT(&new_cred->gc_mc);
 
        /*
         * We go through all the mc attached to the input_cred_handle
@@ -116,7 +116,7 @@ gss_add_cred(OM_uint32 *minor_status,
         */
        target_mc = 0;
        if (cred) {
-               SLIST_FOREACH(mc, &cred->gc_mc, gmc_link) {
+               HEIM_SLIST_FOREACH(mc, &cred->gc_mc, gmc_link) {
                        if (gss_oid_equal(mc->gmc_mech_oid, desired_mech)) {
                                target_mc = mc;
                        }
@@ -127,7 +127,7 @@ gss_add_cred(OM_uint32 *minor_status,
                                *minor_status = ENOMEM;
                                return (GSS_S_FAILURE);
                        }
-                       SLIST_INSERT_HEAD(&new_cred->gc_mc, copy_mc, gmc_link);
+                       HEIM_SLIST_INSERT_HEAD(&new_cred->gc_mc, copy_mc, gmc_link);
                }
        }
 
@@ -178,7 +178,7 @@ gss_add_cred(OM_uint32 *minor_status,
                free(mc);
                return (major_status);
        }
-       SLIST_INSERT_HEAD(&new_cred->gc_mc, mc, gmc_link);
+       HEIM_SLIST_INSERT_HEAD(&new_cred->gc_mc, mc, gmc_link);
        *output_cred_handle = (gss_cred_id_t) new_cred;
 
        return (GSS_S_COMPLETE);
index e98ba970d1a040e2bd0f561b29d8f209beda325d..141b6ae5ac1ba7a51f2e53558d42d785bf4ddf91 100644 (file)
@@ -157,7 +157,7 @@ gss_wrap_iov_length(OM_uint32 * minor_status,
 
 /**
  * Free all buffer allocated by gss_wrap_iov() or gss_unwrap_iov() by
- * looking at the GSS_IOV_BUFFER_TYPE_FLAG_ALLOCATED flag.
+ * looking at the GSS_IOV_BUFFER_FLAG_ALLOCATED flag.
  *
  * @ingroup gssapi
  */
@@ -176,10 +176,10 @@ gss_release_iov_buffer(OM_uint32 *minor_status,
        return GSS_S_CALL_INACCESSIBLE_READ;
 
     for (i = 0; i < iov_count; i++) {
-       if ((iov[i].type & GSS_IOV_BUFFER_TYPE_FLAG_ALLOCATED) == 0)
+       if ((iov[i].type & GSS_IOV_BUFFER_FLAG_ALLOCATED) == 0)
            continue;
        gss_release_buffer(&junk, &iov[i].buffer);
-       iov[i].type &= ~GSS_IOV_BUFFER_TYPE_FLAG_ALLOCATED;
+       iov[i].type &= ~GSS_IOV_BUFFER_FLAG_ALLOCATED;
     }
     return GSS_S_COMPLETE;
 }
index fba35c5379b59ffe1318a738e689b839d41d7e08..e87931dc78acf80a86831f3b978a67df7207636b 100644 (file)
@@ -99,11 +99,11 @@ gss_canonicalize_name(OM_uint32 *minor_status,
                return (GSS_S_FAILURE);
        }
 
-       SLIST_INIT(&name->gn_mn);
+       HEIM_SLIST_INIT(&name->gn_mn);
        mn->gmn_mech = m;
        mn->gmn_mech_oid = &m->gm_mech_oid;
        mn->gmn_name = new_canonical_name;
-       SLIST_INSERT_HEAD(&name->gn_mn, mn, gmn_link);
+       HEIM_SLIST_INSERT_HEAD(&name->gn_mn, mn, gmn_link);
 
        *output_name = (gss_name_t) name;
 
index 14593f6def8898ea37a4290fd59cc6815792003a..70b4b1c20673ed69e6810e14e46df66f82f13a24 100644 (file)
@@ -55,7 +55,7 @@ gss_compare_name(OM_uint32 *minor_status,
                struct _gss_mechanism_name *mn1;
                struct _gss_mechanism_name *mn2;
 
-               SLIST_FOREACH(mn1, &name1->gn_mn, gmn_link) {
+               HEIM_SLIST_FOREACH(mn1, &name1->gn_mn, gmn_link) {
                        OM_uint32 major_status;
 
                        major_status = _gss_find_mn(minor_status, name2,
index b52015b6de44a3d29d8b665186fd5a288e2dc5d4..b8fa11185a27017f039ea6970a6a454ae6d91522 100644 (file)
@@ -62,7 +62,7 @@ gss_export_cred(OM_uint32 * minor_status,
        return GSS_S_NO_CRED;
     }
 
-    SLIST_FOREACH(mc, &cred->gc_mc, gmc_link) {
+    HEIM_SLIST_FOREACH(mc, &cred->gc_mc, gmc_link) {
        if (mc->gmc_mech->gm_export_cred == NULL) {
            *minor_status = 0;
            return GSS_S_NO_CRED;
@@ -75,7 +75,7 @@ gss_export_cred(OM_uint32 * minor_status,
        return GSS_S_FAILURE;
     }
 
-    SLIST_FOREACH(mc, &cred->gc_mc, gmc_link) {
+    HEIM_SLIST_FOREACH(mc, &cred->gc_mc, gmc_link) {
 
        major = mc->gmc_mech->gm_export_cred(minor_status,
                                             mc->gmc_cred, &buffer);
@@ -138,7 +138,7 @@ gss_import_cred(OM_uint32 * minor_status,
        *minor_status = ENOMEM;
        return GSS_S_FAILURE;
     }
-    SLIST_INIT(&cred->gc_mc);
+    HEIM_SLIST_INIT(&cred->gc_mc);
 
     *cred_handle = (gss_cred_id_t)cred;
 
@@ -201,12 +201,12 @@ gss_import_cred(OM_uint32 * minor_status,
        mc->gmc_mech_oid = &m->gm_mech_oid;
        mc->gmc_cred = mcred;
 
-       SLIST_INSERT_HEAD(&cred->gc_mc, mc, gmc_link);
+       HEIM_SLIST_INSERT_HEAD(&cred->gc_mc, mc, gmc_link);
     }
     krb5_storage_free(sp);
     sp = NULL;
 
-    if (SLIST_EMPTY(&cred->gc_mc)) {
+    if (HEIM_SLIST_EMPTY(&cred->gc_mc)) {
        major = GSS_S_NO_CRED;
        goto out;
     }
index 599e79861a7a3fb99ae3231bf44e31ec849aa025..524a586fbef8af075de30bebc5fb8962c9c61135 100644 (file)
@@ -67,7 +67,7 @@ gss_display_name(OM_uint32 *minor_status,
                *minor_status = 0;
                return (GSS_S_COMPLETE);
        } else {
-               SLIST_FOREACH(mn, &name->gn_mn, gmn_link) {
+               HEIM_SLIST_FOREACH(mn, &name->gn_mn, gmn_link) {
                        major_status = mn->gmn_mech->gm_display_name(
                                minor_status, mn->gmn_name,
                                output_name_buffer,
index 3d3a56802f53e0edb2b4e2f78ce26b29ddf5ad86..053825bbc382f46f27feb5732fb1860003fce879 100644 (file)
@@ -53,7 +53,7 @@ gss_duplicate_name(OM_uint32 *minor_status,
                        return (major_status);
                new_name = (struct _gss_name *) *dest_name;
                
-               SLIST_FOREACH(mn, &name->gn_mn, gmn_link) {
+               HEIM_SLIST_FOREACH(mn, &name->gn_mn, gmn_link) {
                    struct _gss_mechanism_name *mn2;
                    _gss_find_mn(minor_status, new_name,
                                 mn->gmn_mech_oid, &mn2);
@@ -65,10 +65,10 @@ gss_duplicate_name(OM_uint32 *minor_status,
                        return (GSS_S_FAILURE);
                }
                memset(new_name, 0, sizeof(struct _gss_name));
-               SLIST_INIT(&new_name->gn_mn);
+               HEIM_SLIST_INIT(&new_name->gn_mn);
                *dest_name = (gss_name_t) new_name;
                
-               SLIST_FOREACH(mn, &name->gn_mn, gmn_link) {
+               HEIM_SLIST_FOREACH(mn, &name->gn_mn, gmn_link) {
                        struct _gss_mechanism_name *new_mn;
                        
                        new_mn = malloc(sizeof(*new_mn));
@@ -86,7 +86,7 @@ gss_duplicate_name(OM_uint32 *minor_status,
                                free(new_mn);
                                continue;
                        }
-                       SLIST_INSERT_HEAD(&new_name->gn_mn, new_mn, gmn_link);
+                       HEIM_SLIST_INSERT_HEAD(&new_name->gn_mn, new_mn, gmn_link);
                }
 
        }
index 6bc5ee8d1cb85b50eaf40700fe2871c7f54c2f5d..3e6e62681913aaafe0f1cdc7371c9e6788a12478 100644 (file)
@@ -43,7 +43,7 @@ gss_export_name(OM_uint32 *minor_status,
         * one, otherwise export based on the first mechanism in our
         * list.
         */
-       mn = SLIST_FIRST(&name->gn_mn);
+       mn = HEIM_SLIST_FIRST(&name->gn_mn);
        if (!mn) {
                *minor_status = 0;
                return (GSS_S_NAME_NOT_MN);
index 90dc0c1e9416048f160362c15cf7a9af70821a9e..574c058fc23f24c58b5522f7a8fd4c226df0be5c 100644 (file)
@@ -209,7 +209,7 @@ gss_import_name(OM_uint32 *minor_status,
                return (GSS_S_FAILURE);
        }
 
-       SLIST_INIT(&name->gn_mn);
+       HEIM_SLIST_INIT(&name->gn_mn);
 
        major_status = _gss_copy_oid(minor_status,
            name_type, &name->gn_type);
@@ -228,7 +228,7 @@ gss_import_name(OM_uint32 *minor_status,
         * for those supported this nametype.
         */
 
-       SLIST_FOREACH(m, &_gss_mechs, gm_link) {
+       HEIM_SLIST_FOREACH(m, &_gss_mechs, gm_link) {
                int present = 0;
 
                major_status = gss_test_oid_set_member(minor_status, 
@@ -257,14 +257,14 @@ gss_import_name(OM_uint32 *minor_status,
 
                mn->gmn_mech = &m->gm_mech;
                mn->gmn_mech_oid = &m->gm_mech_oid;
-               SLIST_INSERT_HEAD(&name->gn_mn, mn, gmn_link);
+               HEIM_SLIST_INSERT_HEAD(&name->gn_mn, mn, gmn_link);
        }
 
        /*
         * If we can't find a mn for the name, bail out already here.
         */
 
-       mn = SLIST_FIRST(&name->gn_mn);
+       mn = HEIM_SLIST_FIRST(&name->gn_mn);
        if (!mn) {
                *minor_status = 0;
                major_status = GSS_S_NAME_NOT_MN;
index 8560bc7c4110a3a34f249bfe998e6daad8ac8b55..59a1dcf22bb629abf660e5502118131ba6bc3226 100644 (file)
@@ -43,7 +43,7 @@ gss_indicate_mechs(OM_uint32 *minor_status,
        if (major_status)
                return (major_status);
        
-       SLIST_FOREACH(m, &_gss_mechs, gm_link) {
+       HEIM_SLIST_FOREACH(m, &_gss_mechs, gm_link) {
                if (m->gm_mech.gm_indicate_mechs) {
                        major_status = m->gm_mech.gm_indicate_mechs(
                            minor_status, &set);
index 5da035d15a70d3af286b4332eafb02e92e352b8d..cf111ecbae096cb46e58404e0539e78b99a4d8bf 100644 (file)
@@ -37,7 +37,7 @@ _gss_mech_cred_find(gss_cred_id_t cred_handle, gss_OID mech_type)
        if (cred == NULL)
                return GSS_C_NO_CREDENTIAL;
 
-       SLIST_FOREACH(mc, &cred->gc_mc, gmc_link) {
+       HEIM_SLIST_FOREACH(mc, &cred->gc_mc, gmc_link) {
                if (gss_oid_equal(mech_type, mc->gmc_mech_oid))
                        return mc->gmc_cred;
        }
index 50d9c0b8da939b1fa2b87def2e581d4588124ca4..1db0f233033c5a01b6ce4fadf6d6053bc38bd104 100644 (file)
@@ -78,7 +78,7 @@ gss_inquire_cred(OM_uint32 *minor_status,
                        *minor_status = ENOMEM;
                        return (GSS_S_FAILURE);
                }
-               SLIST_INIT(&name->gn_mn);
+               HEIM_SLIST_INIT(&name->gn_mn);
        } else {
                name = NULL;
        }
@@ -96,7 +96,7 @@ gss_inquire_cred(OM_uint32 *minor_status,
        if (cred) {
                struct _gss_mechanism_cred *mc;
 
-               SLIST_FOREACH(mc, &cred->gc_mc, gmc_link) {
+               HEIM_SLIST_FOREACH(mc, &cred->gc_mc, gmc_link) {
                        gss_name_t mc_name;
                        OM_uint32 mc_lifetime;
 
@@ -116,7 +116,7 @@ gss_inquire_cred(OM_uint32 *minor_status,
                                mn->gmn_mech = mc->gmc_mech;
                                mn->gmn_mech_oid = mc->gmc_mech_oid;
                                mn->gmn_name = mc_name;
-                               SLIST_INSERT_HEAD(&name->gn_mn, mn, gmn_link);
+                               HEIM_SLIST_INSERT_HEAD(&name->gn_mn, mn, gmn_link);
                        } else {
                                mc->gmc_mech->gm_release_name(minor_status,
                                    &mc_name);
@@ -131,7 +131,7 @@ gss_inquire_cred(OM_uint32 *minor_status,
                        found++;
                }
        } else {
-               SLIST_FOREACH(m, &_gss_mechs, gm_link) {
+               HEIM_SLIST_FOREACH(m, &_gss_mechs, gm_link) {
                        gss_name_t mc_name;
                        OM_uint32 mc_lifetime;
 
@@ -153,7 +153,7 @@ gss_inquire_cred(OM_uint32 *minor_status,
                                mn->gmn_mech = &m->gm_mech;
                                mn->gmn_mech_oid = &m->gm_mech_oid;
                                mn->gmn_name = mc_name;
-                               SLIST_INSERT_HEAD(&name->gn_mn, mn, gmn_link);
+                               HEIM_SLIST_INSERT_HEAD(&name->gn_mn, mn, gmn_link);
                        } else if (mc_name) {
                                m->gm_mech.gm_release_name(minor_status,
                                    &mc_name);
index f71bd6993f85b85be703ab11421652e9d60e1a93..e7746e46578dc6b4cf6305d41c1cb4055a411348 100644 (file)
@@ -60,7 +60,7 @@ gss_inquire_cred_by_mech(OM_uint32 *minor_status,
 
        if (cred_handle != GSS_C_NO_CREDENTIAL) {
                struct _gss_cred *cred = (struct _gss_cred *) cred_handle;
-               SLIST_FOREACH(mcp, &cred->gc_mc, gmc_link)
+               HEIM_SLIST_FOREACH(mcp, &cred->gc_mc, gmc_link)
                        if (mcp->gmc_mech == m)
                                break;
                if (!mcp)
index 72d30480398602fd2c6d042b62fb62f4e70e140b..900370a5dbca96d4871a67dbf07c0aa49f981f94 100644 (file)
@@ -50,7 +50,7 @@ gss_inquire_cred_by_oid (OM_uint32 *minor_status,
        if (cred == NULL)
                return GSS_S_NO_CRED;
 
-       SLIST_FOREACH(mc, &cred->gc_mc, gmc_link) {
+       HEIM_SLIST_FOREACH(mc, &cred->gc_mc, gmc_link) {
                gss_buffer_set_t rset = GSS_C_NO_BUFFER_SET;
                int i;
 
index 1ad7b58dbb69d69130e685e12850562333cbb9f6..f8eab82dc1cdcaee697605527eba0eca2c537acb 100644 (file)
@@ -52,7 +52,7 @@ gss_inquire_mechs_for_name(OM_uint32 *minor_status,
         * name's type is supported by the mechanism. If it is, add
         * the mechanism to the set.
         */
-       SLIST_FOREACH(m, &_gss_mechs, gm_link) {
+       HEIM_SLIST_FOREACH(m, &_gss_mechs, gm_link) {
                major_status = gss_inquire_names_for_mech(minor_status,
                    &m->gm_mech_oid, &name_types);
                if (major_status) {
index f4290a2a5a982f88c8b6353a3e2cb332dfeb55fa..594b41ef8ea734044b9730bcaef3fd02a40e77cd 100644 (file)
@@ -197,7 +197,7 @@ gsskrb5_register_acceptor_identity(const char *identity)
        buffer.value = rk_UNCONST(identity);
        buffer.length = strlen(identity);
 
-       SLIST_FOREACH(m, &_gss_mechs, gm_link) {
+       HEIM_SLIST_FOREACH(m, &_gss_mechs, gm_link) {
                if (m->gm_mech.gm_set_sec_context_option == NULL)
                        continue;
                m->gm_mech.gm_set_sec_context_option(&junk, NULL,
@@ -227,7 +227,7 @@ gsskrb5_set_dns_canonicalize(int flag)
        buffer.value = &b;
        buffer.length = sizeof(b);
 
-       SLIST_FOREACH(m, &_gss_mechs, gm_link) {
+       HEIM_SLIST_FOREACH(m, &_gss_mechs, gm_link) {
                if (m->gm_mech.gm_set_sec_context_option == NULL)
                        continue;
                m->gm_mech.gm_set_sec_context_option(&junk, NULL,
@@ -501,7 +501,7 @@ gsskrb5_set_send_to_kdc(struct gsskrb5_send_to_kdc *c)
        buffer.length = 0;
     }
 
-    SLIST_FOREACH(m, &_gss_mechs, gm_link) {
+    HEIM_SLIST_FOREACH(m, &_gss_mechs, gm_link) {
        if (m->gm_mech.gm_set_sec_context_option == NULL)
            continue;
        m->gm_mech.gm_set_sec_context_option(&junk, NULL,
@@ -532,7 +532,7 @@ gss_krb5_ccache_name(OM_uint32 *minor_status,
     buffer.value = rk_UNCONST(name);
     buffer.length = strlen(name);
 
-    SLIST_FOREACH(m, &_gss_mechs, gm_link) {
+    HEIM_SLIST_FOREACH(m, &_gss_mechs, gm_link) {
        if (m->gm_mech.gm_set_sec_context_option == NULL)
            continue;
        m->gm_mech.gm_set_sec_context_option(&junk, NULL,
@@ -820,7 +820,7 @@ gsskrb5_set_default_realm(const char *realm)
        buffer.value = rk_UNCONST(realm);
        buffer.length = strlen(realm);
 
-       SLIST_FOREACH(m, &_gss_mechs, gm_link) {
+       HEIM_SLIST_FOREACH(m, &_gss_mechs, gm_link) {
                if (m->gm_mech.gm_set_sec_context_option == NULL)
                        continue;
                m->gm_mech.gm_set_sec_context_option(&junk, NULL,
@@ -882,7 +882,7 @@ gsskrb5_set_time_offset(int offset)
        buffer.value = &o;
        buffer.length = sizeof(o);
 
-       SLIST_FOREACH(m, &_gss_mechs, gm_link) {
+       HEIM_SLIST_FOREACH(m, &_gss_mechs, gm_link) {
                if (m->gm_mech.gm_set_sec_context_option == NULL)
                        continue;
                m->gm_mech.gm_set_sec_context_option(&junk, NULL,
@@ -905,7 +905,7 @@ gsskrb5_get_time_offset(int *offset)
        buffer.value = &o;
        buffer.length = sizeof(o);
 
-       SLIST_FOREACH(m, &_gss_mechs, gm_link) {
+       HEIM_SLIST_FOREACH(m, &_gss_mechs, gm_link) {
                if (m->gm_mech.gm_set_sec_context_option == NULL)
                        continue;
                maj_stat = m->gm_mech.gm_set_sec_context_option(&junk, NULL,
@@ -932,7 +932,7 @@ gsskrb5_plugin_register(struct gsskrb5_krb5_plugin *c)
     buffer.value = c;
     buffer.length = sizeof(*c);
 
-    SLIST_FOREACH(m, &_gss_mechs, gm_link) {
+    HEIM_SLIST_FOREACH(m, &_gss_mechs, gm_link) {
        if (m->gm_mech.gm_set_sec_context_option == NULL)
            continue;
        m->gm_mech.gm_set_sec_context_option(&junk, NULL,
index b1368db91ca25d7170f2c7544467343d938c77b9..a68d345e304b28aed3ca33bbbb3379101e15d0fd 100644 (file)
@@ -194,7 +194,7 @@ add_builtin(gssapi_mech_interface mech)
     if (m->gm_name_types == NULL)
        gss_create_empty_oid_set(&minor_status, &m->gm_name_types);
 
-    SLIST_INSERT_HEAD(&_gss_mechs, m, gm_link);
+    HEIM_SLIST_INSERT_HEAD(&_gss_mechs, m, gm_link);
     return 0;
 }
 
@@ -217,7 +217,7 @@ _gss_load_mech(void)
 
        HEIMDAL_MUTEX_lock(&_gss_mech_mutex);
 
-       if (SLIST_FIRST(&_gss_mechs)) {
+       if (HEIM_SLIST_FIRST(&_gss_mechs)) {
                HEIMDAL_MUTEX_unlock(&_gss_mech_mutex);
                return;
        }
@@ -262,7 +262,7 @@ _gss_load_mech(void)
                 * Check for duplicates, already loaded mechs.
                 */
                found = 0;
-               SLIST_FOREACH(m, &_gss_mechs, gm_link) {
+               HEIM_SLIST_FOREACH(m, &_gss_mechs, gm_link) {
                        if (gss_oid_equal(&m->gm_mech.gm_mech_oid, &mech_oid)) {
                                found = 1;
                                free(mech_oid.elements);
@@ -276,7 +276,11 @@ _gss_load_mech(void)
 #define RTLD_LOCAL 0
 #endif
 
-               so = dlopen(lib, RTLD_LAZY | RTLD_LOCAL);
+#ifndef RTLD_GROUP
+#define RTLD_GROUP 0
+#endif
+
+               so = dlopen(lib, RTLD_LAZY | RTLD_LOCAL | RTLD_GROUP);
                if (!so) {
 /*                     fprintf(stderr, "dlopen: %s\n", dlerror()); */
                        free(mech_oid.elements);
@@ -338,7 +342,7 @@ _gss_load_mech(void)
                OPTSYM(unwrap_iov);
                OPTSYM(wrap_iov_length);
 
-               SLIST_INSERT_HEAD(&_gss_mechs, m, gm_link);
+               HEIM_SLIST_INSERT_HEAD(&_gss_mechs, m, gm_link);
                continue;
 
        bad:
@@ -358,7 +362,7 @@ __gss_get_mechanism(gss_const_OID mech)
         struct _gss_mech_switch        *m;
 
        _gss_load_mech();
-       SLIST_FOREACH(m, &_gss_mechs, gm_link) {
+       HEIM_SLIST_FOREACH(m, &_gss_mechs, gm_link) {
                if (gss_oid_equal(&m->gm_mech.gm_mech_oid, mech))
                        return &m->gm_mech;
        }
index 354229f7ae86137441a00724700e711254cabb91..31235f54d5acb2d0777c567225da3ccbc4c6196d 100644 (file)
@@ -249,7 +249,7 @@ gss_inquire_mech_for_saslname(OM_uint32 *minor_status,
 
     *mech_type = NULL;
 
-    SLIST_FOREACH(m, &_gss_mechs, gm_link) {
+    HEIM_SLIST_FOREACH(m, &_gss_mechs, gm_link) {
 
        major = mo_value(&m->gm_mech_oid, GSS_C_MA_SASL_MECH_NAME, &name);
        if (major)
@@ -295,7 +295,7 @@ gss_indicate_mechs_by_attrs(OM_uint32 * minor_status,
 
     _gss_load_mech();
 
-    SLIST_FOREACH(ms, &_gss_mechs, gm_link) {
+    HEIM_SLIST_FOREACH(ms, &_gss_mechs, gm_link) {
        gssapi_mech_interface mi = &ms->gm_mech;
 
        if (desired_mech_attrs) {
@@ -388,7 +388,7 @@ gss_inquire_attrs_for_mech(OM_uint32 * minor_status,
 
        _gss_load_mech();
 
-       SLIST_FOREACH(m, &_gss_mechs, gm_link)
+       HEIM_SLIST_FOREACH(m, &_gss_mechs, gm_link)
            add_all_mo(&m->gm_mech, known_mech_attrs, GSS_MO_MA);
     }
 
index 6a7ccd5c7189bb163e6707cef13bd8b93fbbe5b2..4b470c775f24859161fbbc812cb694de064c19eb 100644 (file)
@@ -38,7 +38,7 @@ _gss_find_mn(OM_uint32 *minor_status, struct _gss_name *name, gss_OID mech,
 
        *output_mn = NULL;
 
-       SLIST_FOREACH(mn, &name->gn_mn, gmn_link) {
+       HEIM_SLIST_FOREACH(mn, &name->gn_mn, gmn_link) {
                if (gss_oid_equal(mech, mn->gmn_mech_oid))
                        break;
        }
@@ -72,7 +72,7 @@ _gss_find_mn(OM_uint32 *minor_status, struct _gss_name *name, gss_OID mech,
 
                mn->gmn_mech = m;
                mn->gmn_mech_oid = &m->gm_mech_oid;
-               SLIST_INSERT_HEAD(&name->gn_mn, mn, gmn_link);
+               HEIM_SLIST_INSERT_HEAD(&name->gn_mn, mn, gmn_link);
        }
        *output_mn = mn;
        return 0;
@@ -99,11 +99,11 @@ _gss_make_name(gssapi_mech_interface m, gss_name_t new_mn)
                return (0);
        }
 
-       SLIST_INIT(&name->gn_mn);
+       HEIM_SLIST_INIT(&name->gn_mn);
        mn->gmn_mech = m;
        mn->gmn_mech_oid = &m->gm_mech_oid;
        mn->gmn_name = new_mn;
-       SLIST_INSERT_HEAD(&name->gn_mn, mn, gmn_link);
+       HEIM_SLIST_INSERT_HEAD(&name->gn_mn, mn, gmn_link);
 
        return (name);
 }
index 591ef49ab2f911821bac163cc4b945425b430cc3..341f9f658cc302694f8bf750d8190c7be822a7a0 100644 (file)
@@ -59,9 +59,9 @@ gss_release_cred(OM_uint32 *minor_status, gss_cred_id_t *cred_handle)
        if (*cred_handle == GSS_C_NO_CREDENTIAL)
            return (GSS_S_COMPLETE);
 
-       while (SLIST_FIRST(&cred->gc_mc)) {
-               mc = SLIST_FIRST(&cred->gc_mc);
-               SLIST_REMOVE_HEAD(&cred->gc_mc, gmc_link);
+       while (HEIM_SLIST_FIRST(&cred->gc_mc)) {
+               mc = HEIM_SLIST_FIRST(&cred->gc_mc);
+               HEIM_SLIST_REMOVE_HEAD(&cred->gc_mc, gmc_link);
                mc->gmc_mech->gm_release_cred(minor_status, &mc->gmc_cred);
                free(mc);
        }
index 28fb75d9667f1aacc327a65801ff866d36863674..759eaec4c32fab88ec08087de770100c00d5ef40 100644 (file)
@@ -58,10 +58,10 @@ gss_release_name(OM_uint32 *minor_status,
 
        if (name->gn_type.elements)
                free(name->gn_type.elements);
-       while (SLIST_FIRST(&name->gn_mn)) {
+       while (HEIM_SLIST_FIRST(&name->gn_mn)) {
                struct _gss_mechanism_name *mn;
-               mn = SLIST_FIRST(&name->gn_mn);
-               SLIST_REMOVE_HEAD(&name->gn_mn, gmn_link);
+               mn = HEIM_SLIST_FIRST(&name->gn_mn);
+               HEIM_SLIST_REMOVE_HEAD(&name->gn_mn, gmn_link);
                mn->gmn_mech->gm_release_name(minor_status,
                                              &mn->gmn_name);
                free(mn);
index adae7a622e6a73c8e08a5d1eb0c197d0f12fc2fd..62be485a0783506f8fa17a90c2ccac46d0dc4755 100644 (file)
@@ -54,9 +54,9 @@ gss_set_cred_option (OM_uint32 *minor_status,
                if (cred == NULL)
                    return GSS_S_FAILURE;
 
-               SLIST_INIT(&cred->gc_mc);
+               HEIM_SLIST_INIT(&cred->gc_mc);
 
-               SLIST_FOREACH(m, &_gss_mechs, gm_link) {
+               HEIM_SLIST_FOREACH(m, &_gss_mechs, gm_link) {
 
                        if (m->gm_mech.gm_set_cred_option == NULL)
                                continue;
@@ -81,7 +81,7 @@ gss_set_cred_option (OM_uint32 *minor_status,
                                continue;
                        }
                        one_ok = 1;
-                       SLIST_INSERT_HEAD(&cred->gc_mc, mc, gmc_link);
+                       HEIM_SLIST_INSERT_HEAD(&cred->gc_mc, mc, gmc_link);
                }
                *cred_handle = (gss_cred_id_t)cred;
                if (!one_ok) {
@@ -91,7 +91,7 @@ gss_set_cred_option (OM_uint32 *minor_status,
        } else {
                gssapi_mech_interface   m;
 
-               SLIST_FOREACH(mc, &cred->gc_mc, gmc_link) {
+               HEIM_SLIST_FOREACH(mc, &cred->gc_mc, gmc_link) {
                        m = mc->gmc_mech;
        
                        if (m == NULL)
index 56e3b7dea79a466592d05924ee2fa7f8ec562162..7ed3d4d4aa34736462ff0d01866da7da7196d67a 100644 (file)
 #include <gssapi_mech.h>
 
 struct _gss_mech_switch {
-       SLIST_ENTRY(_gss_mech_switch)   gm_link;
+       HEIM_SLIST_ENTRY(_gss_mech_switch)      gm_link;
        gss_OID_desc                    gm_mech_oid;
        gss_OID_set                     gm_name_types;
        void                            *gm_so;
        gssapi_mech_interface_desc      gm_mech;
 };
-SLIST_HEAD(_gss_mech_switch_list, _gss_mech_switch);
+HEIM_SLIST_HEAD(_gss_mech_switch_list, _gss_mech_switch);
 extern struct _gss_mech_switch_list _gss_mechs;
 extern gss_OID_set _gss_mech_oids;
 
index 7a05c94bf802ea2f2fe3110a66afe574d09a12f9..95941bab7e876bd0350931737ee317b032551374 100644 (file)
 #ifndef        _MECHQUEUE_H_
 #define        _MECHQUEUE_H_
 
-#ifndef SLIST_HEAD
-
 /*
  * Singly-linked List definitions.
  */
-#define        SLIST_HEAD(name, type)                                          \
+#define        HEIM_SLIST_HEAD(name, type)                                             \
 struct name {                                                          \
        struct type *slh_first; /* first element */                     \
 }
 
-#define        SLIST_HEAD_INITIALIZER(head)                                    \
+#define        HEIM_SLIST_HEAD_INITIALIZER(head)                                       \
        { NULL }
 
-#define        SLIST_ENTRY(type)                                               \
+#define        HEIM_SLIST_ENTRY(type)                                          \
 struct {                                                               \
        struct type *sle_next;  /* next element */                      \
 }
@@ -55,27 +53,27 @@ struct {                                                            \
 /*
  * Singly-linked List functions.
  */
-#define        SLIST_INIT(head) do {                                           \
+#define        HEIM_SLIST_INIT(head) do {                                              \
        (head)->slh_first = NULL;                                       \
 } while (/*CONSTCOND*/0)
 
-#define        SLIST_INSERT_AFTER(slistelm, elm, field) do {                   \
+#define        HEIM_SLIST_INSERT_AFTER(slistelm, elm, field) do {                      \
        (elm)->field.sle_next = (slistelm)->field.sle_next;             \
        (slistelm)->field.sle_next = (elm);                             \
 } while (/*CONSTCOND*/0)
 
-#define        SLIST_INSERT_HEAD(head, elm, field) do {                        \
+#define        HEIM_SLIST_INSERT_HEAD(head, elm, field) do {                   \
        (elm)->field.sle_next = (head)->slh_first;                      \
        (head)->slh_first = (elm);                                      \
 } while (/*CONSTCOND*/0)
 
-#define        SLIST_REMOVE_HEAD(head, field) do {                             \
+#define        HEIM_SLIST_REMOVE_HEAD(head, field) do {                                \
        (head)->slh_first = (head)->slh_first->field.sle_next;          \
 } while (/*CONSTCOND*/0)
 
-#define        SLIST_REMOVE(head, elm, type, field) do {                       \
+#define        HEIM_SLIST_REMOVE(head, elm, type, field) do {                  \
        if ((head)->slh_first == (elm)) {                               \
-               SLIST_REMOVE_HEAD((head), field);                       \
+               HEIM_SLIST_REMOVE_HEAD((head), field);                  \
        }                                                               \
        else {                                                          \
                struct type *curelm = (head)->slh_first;                \
@@ -86,16 +84,14 @@ struct {                                                            \
        }                                                               \
 } while (/*CONSTCOND*/0)
 
-#define        SLIST_FOREACH(var, head, field)                                 \
+#define        HEIM_SLIST_FOREACH(var, head, field)                                    \
        for((var) = (head)->slh_first; (var); (var) = (var)->field.sle_next)
 
 /*
  * Singly-linked List access methods.
  */
-#define        SLIST_EMPTY(head)       ((head)->slh_first == NULL)
-#define        SLIST_FIRST(head)       ((head)->slh_first)
-#define        SLIST_NEXT(elm, field)  ((elm)->field.sle_next)
-
-#endif /* SLIST_HEAD */
+#define        HEIM_SLIST_EMPTY(head)  ((head)->slh_first == NULL)
+#define        HEIM_SLIST_FIRST(head)  ((head)->slh_first)
+#define        HEIM_SLIST_NEXT(elm, field)     ((elm)->field.sle_next)
 
 #endif /* !_MECHQUEUE_H_ */
index baf8e0614772ceca79b181691a95e8bbaebffe68..4baeebf36a8274682977432ac7d84e69025ac5a3 100644 (file)
  */
 
 struct _gss_mechanism_name {
-       SLIST_ENTRY(_gss_mechanism_name) gmn_link;
+       HEIM_SLIST_ENTRY(_gss_mechanism_name) gmn_link;
        gssapi_mech_interface   gmn_mech;       /* mechanism ops for MN */
        gss_OID                 gmn_mech_oid;   /* mechanism oid for MN */
        gss_name_t              gmn_name;       /* underlying MN */
 };
-SLIST_HEAD(_gss_mechanism_name_list, _gss_mechanism_name);
+HEIM_SLIST_HEAD(_gss_mechanism_name_list, _gss_mechanism_name);
 
 struct _gss_name {
        gss_OID_desc            gn_type;        /* type of name */
index 1b0468a481f1793fa8d783de6bc83962dfa17af4..fffda7aef00b4124e13f93fecce18c9530479536 100644 (file)
@@ -36,6 +36,8 @@
 #ifndef __HDB_H__
 #define __HDB_H__
 
+#include <krb5.h>
+
 #include <hdb_err.h>
 
 #include <heim_asn1.h>
index a38226d94cb089d0ede0aea10e36b60264491828..5d66b681d9c356d6dc46cc7403999f79f18c322b 100644 (file)
@@ -1506,8 +1506,8 @@ static struct hx509_private_key_ops *private_algs[] = {
     NULL
 };
 
-static hx509_private_key_ops *
-find_private_alg(const heim_oid *oid)
+hx509_private_key_ops *
+hx509_find_private_alg(const heim_oid *oid)
 {
     int i;
     for (i = 0; private_algs[i]; i++) {
@@ -1770,7 +1770,7 @@ _hx509_parse_private_key(hx509_context context,
 
     *private_key = NULL;
 
-    ops = find_private_alg(&keyai->algorithm);
+    ops = hx509_find_private_alg(&keyai->algorithm);
     if (ops == NULL) {
        hx509_clear_error_string(context);
        return HX509_SIG_ALG_NO_SUPPORTED;
@@ -1865,7 +1865,7 @@ _hx509_generate_private_key(hx509_context context,
 
     *private_key = NULL;
 
-    ops = find_private_alg(ctx->key_oid);
+    ops = hx509_find_private_alg(ctx->key_oid);
     if (ops == NULL) {
        hx509_clear_error_string(context);
        return HX509_SIG_ALG_NO_SUPPORTED;
index 1a5e2f30807e4ae573e6222aa7ffd41d37be4546..3954b54b1c04c0b67569f73b11be52be8f752be0 100644 (file)
@@ -48,6 +48,7 @@ typedef struct hx509_crypto_data *hx509_crypto;
 typedef struct hx509_lock_data *hx509_lock;
 typedef struct hx509_name_data *hx509_name;
 typedef struct hx509_private_key *hx509_private_key;
+typedef struct hx509_private_key_ops hx509_private_key_ops;
 typedef struct hx509_validate_ctx_data *hx509_validate_ctx;
 typedef struct hx509_verify_ctx_data *hx509_verify_ctx;
 typedef struct hx509_revoke_ctx_data *hx509_revoke_ctx;
index 3e3ab23c6df04f8541a4c8cfd220e77a59af1308..a0a5235c75864ce4e27209378293d0ed5a396b26 100644 (file)
@@ -82,7 +82,6 @@ typedef struct hx509_path hx509_path;
 
 typedef void (*_hx509_cert_release_func)(struct hx509_cert_data *, void *);
 
-typedef struct hx509_private_key_ops hx509_private_key_ops;
 
 #include "sel.h"
 
index c0666d81c99ad275219f5d9574e86b5427fbb080..4748fa1d0fad1d2dbbd0fda78779431f11721985 100644 (file)
@@ -4,6 +4,7 @@ HEIMDAL_X509_1.2 {
        global:
                _hx509_cert_assign_key;
                _hx509_cert_private_key;
+               _hx509_cert_public_encrypt;
                _hx509_certs_keys_free;
                _hx509_certs_keys_get;
                _hx509_expr_eval;
@@ -16,8 +17,12 @@ HEIMDAL_X509_1.2 {
                _hx509_generate_private_key_is_ca;
                _hx509_map_file_os;
                _hx509_name_from_Name;
+               _hx509_parse_private_key;
+               _hx509_private_key_assign_rsa;
                _hx509_private_key2SPKI;
                _hx509_private_key_free;
+               _hx509_private_key_init;
+               _hx509_private_key_private_decrypt;
                _hx509_private_key_ref;
                _hx509_request_add_dns_name;
                _hx509_request_add_email;
@@ -146,6 +151,7 @@ HEIMDAL_X509_1.2 {
                hx509_err;
                hx509_free_error_string;
                hx509_free_octet_string_list;
+               hx509_find_private_alg;
                hx509_general_name_unparse;
                hx509_get_error_string;
                hx509_get_one_cert;
index d08c5b58515fa0a06816b8a2352c1daff00db2cf..89f778823d3c00ba45bc73f6f3c5ca01a238e0ee 100644 (file)
@@ -877,12 +877,7 @@ next_component_string(char * begin, char * delims, char **state)
 
     end = begin;
     while (*end == '"') {
-        char * t;
-        while ((t = strchr(end + 1, '"')) != NULL && *(t - 1) == '\\') {
-            --t;
-            memmove(t, t + 1, strlen(t));
-            end = t;
-        }
+        char * t = strchr(end + 1, '"');
 
         if (t)
             end = ++t;
index 5bd14ce09d95d0e099f4d6fd9aa48090d6f1a94d..5e468f360a68ce474f2d1f1578959736b8bf43fc 100644 (file)
@@ -74,9 +74,9 @@ struct encryption_type *_krb5_etypes[] = {
     &_krb5_enctype_old_des3_cbc_sha1,
 #endif
 #ifdef HEIM_WEAK_CRYPTO
-    &_krb5_enctype_des_cbc_crc,
-    &_krb5_enctype_des_cbc_md4,
     &_krb5_enctype_des_cbc_md5,
+    &_krb5_enctype_des_cbc_md4,
+    &_krb5_enctype_des_cbc_crc,
     &_krb5_enctype_des_cbc_none,
     &_krb5_enctype_des_cfb64_none,
     &_krb5_enctype_des_pcbc_none,
index d1ffd5773800dc07cb00649a9b5c927e1d7bd0e9..e06077453305fd691312ad74d14af2da24edded9 100644 (file)
@@ -164,6 +164,36 @@ krb5_kt_register(krb5_context context,
     return 0;
 }
 
+static const char *
+keytab_name(const char * name, const char ** ptype, size_t * ptype_len)
+{
+    const char * residual;
+
+    residual = strchr(name, ':');
+
+    if (residual == NULL
+
+#ifdef _WIN32
+
+        /* Avoid treating <drive>:<path> as a keytab type
+         * specification */
+
+        || name + 1 == residual
+#endif
+        ) {
+
+        *ptype = "FILE";
+        *ptype_len = strlen(*ptype);
+        residual = name;
+    } else {
+        *ptype = name;
+        *ptype_len = residual - name;
+        residual++;
+    }
+
+    return residual;
+}
+
 /**
  * Resolve the keytab name (of the form `type:residual') in `name'
  * into a keytab in `id'.
@@ -189,16 +219,7 @@ krb5_kt_resolve(krb5_context context,
     size_t type_len;
     krb5_error_code ret;
 
-    residual = strchr(name, ':');
-    if(residual == NULL) {
-       type = "FILE";
-       type_len = strlen(type);
-       residual = name;
-    } else {
-       type = name;
-       type_len = residual - name;
-       residual++;
-    }
+    residual = keytab_name(name, &type, &type_len);
 
     for(i = 0; i < context->num_kt_types; i++) {
        if(strncasecmp(type, context->kt_types[i].prefix, type_len) == 0)
index d05696476921cabaebf1d1446a81af2324d59c1a..d5ac4883db1018767dd4e11c2fd018d2ac9bbd21 100644 (file)
@@ -61,7 +61,7 @@ any_resolve(krb5_context context, const char *name, krb5_keytab id)
     char buf[256];
 
     while (strsep_copy(&name, ",", buf, sizeof(buf)) != -1) {
-       a = malloc(sizeof(*a));
+       a = calloc(1, sizeof(*a));
        if (a == NULL) {
            ret = ENOMEM;
            goto fail;
index 1bf922baf67905ca44cd5dac3cdc71d3c3c36fd5..7a8502727e30615c25f444bd1c72ed2f235f3bbd 100644 (file)
@@ -2214,7 +2214,21 @@ _krb5_parse_moduli(krb5_context context, const char *file,
     if (file == NULL)
        file = MODULI_FILE;
 
+#ifdef KRB5_USE_PATH_TOKENS
+    {
+        char * exp_file;
+
+        if (_krb5_expand_path_tokens(context, file, &exp_file) == 0) {
+            f = fopen(exp_file, "r");
+            krb5_xfree(exp_file);
+        } else {
+            f = NULL;
+        }
+    }
+#else
     f = fopen(file, "r");
+#endif
+
     if (f == NULL) {
        *moduli = m;
        return 0;
index 6a09da40e45b4b66079d1a2144bbdd2b3e5e2f0f..a819d510d031de64971ab947f676af7b1a66795a 100644 (file)
 #define MAXPATHLEN (1024+4)
 #endif
 
-#else/* !_WIN32 */
-
-/* Minimize conflict with WinNT.h */
-#ifdef SLIST_ENTRY
-#undef SLIST_ENTRY
-#endif
-
-#endif /* _WIN32 */
+#endif /* !_WIN32 */
 
 #ifndef PATH_MAX
 #define PATH_MAX MAX_PATH
index e7cb1598fb66a3075faf732aa0966940331749c2..1ca3c10dc91e18bd6d836e82c0ae5758ba61fd2e 100644 (file)
@@ -262,12 +262,18 @@ struct sockaddr_dl;
 #endif
 
 #ifndef HAVE_SSIZE_T
+#ifndef SSIZE_T_DEFINED
+#ifdef ssize_t
+#undef ssize_t
+#endif
 #ifdef _WIN64
 typedef __int64 ssize_t;
 #else
 typedef int ssize_t;
 #endif
-#endif
+#define SSIZE_T_DEFINED
+#endif  /* SSIZE_T_DEFINED */
+#endif  /* HAVE_SSIZE_T */
 
 #include <roken-common.h>