summaryrefslogtreecommitdiff
path: root/source4/heimdal/lib/hdb
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2005-08-27 11:49:06 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:34:39 -0500
commit08730652fbf1c9f6d53378b1b094a2c5ddf2cf62 (patch)
tree077a628e42ccb9388e6ebbbe6ab068980b592554 /source4/heimdal/lib/hdb
parent02caf604be250e71b46619949cbbfa11543a3907 (diff)
downloadsamba-08730652fbf1c9f6d53378b1b094a2c5ddf2cf62.tar.gz
samba-08730652fbf1c9f6d53378b1b094a2c5ddf2cf62.tar.bz2
samba-08730652fbf1c9f6d53378b1b094a2c5ddf2cf62.zip
r9680: Update Heimdal to current lorikeet-heimdal (which was itself updated
to Heimdal CVS as of 2005-08-27). Andrew Bartlett (This used to be commit 913924a4997f5e14c503f87510cbd8e4bfd965a9)
Diffstat (limited to 'source4/heimdal/lib/hdb')
-rw-r--r--source4/heimdal/lib/hdb/hdb-protos.h359
-rw-r--r--source4/heimdal/lib/hdb/hdb.c14
-rw-r--r--source4/heimdal/lib/hdb/mkey.c5
3 files changed, 376 insertions, 2 deletions
diff --git a/source4/heimdal/lib/hdb/hdb-protos.h b/source4/heimdal/lib/hdb/hdb-protos.h
index 799f013eba..56566b7fe4 100644
--- a/source4/heimdal/lib/hdb/hdb-protos.h
+++ b/source4/heimdal/lib/hdb/hdb-protos.h
@@ -8,6 +8,317 @@
extern "C" {
#endif
+unsigned
+HDBFlags2int (HDBFlags /*f*/);
+
+int
+copy_Event (
+ const Event */*from*/,
+ Event */*to*/);
+
+int
+copy_GENERATION (
+ const GENERATION */*from*/,
+ GENERATION */*to*/);
+
+int
+copy_HDBFlags (
+ const HDBFlags */*from*/,
+ HDBFlags */*to*/);
+
+int
+copy_HDB_Ext_Aliases (
+ const HDB_Ext_Aliases */*from*/,
+ HDB_Ext_Aliases */*to*/);
+
+int
+copy_HDB_Ext_Constrained_delegation_acl (
+ const HDB_Ext_Constrained_delegation_acl */*from*/,
+ HDB_Ext_Constrained_delegation_acl */*to*/);
+
+int
+copy_HDB_Ext_Lan_Manager_OWF (
+ const HDB_Ext_Lan_Manager_OWF */*from*/,
+ HDB_Ext_Lan_Manager_OWF */*to*/);
+
+int
+copy_HDB_Ext_PKINIT_acl (
+ const HDB_Ext_PKINIT_acl */*from*/,
+ HDB_Ext_PKINIT_acl */*to*/);
+
+int
+copy_HDB_Ext_PKINIT_certificate (
+ const HDB_Ext_PKINIT_certificate */*from*/,
+ HDB_Ext_PKINIT_certificate */*to*/);
+
+int
+copy_HDB_Ext_Password (
+ const HDB_Ext_Password */*from*/,
+ HDB_Ext_Password */*to*/);
+
+int
+copy_HDB_extension (
+ const HDB_extension */*from*/,
+ HDB_extension */*to*/);
+
+int
+copy_HDB_extensions (
+ const HDB_extensions */*from*/,
+ HDB_extensions */*to*/);
+
+int
+copy_Key (
+ const Key */*from*/,
+ Key */*to*/);
+
+int
+copy_Salt (
+ const Salt */*from*/,
+ Salt */*to*/);
+
+int
+copy_hdb_entry (
+ const hdb_entry */*from*/,
+ hdb_entry */*to*/);
+
+int
+decode_Event (
+ const unsigned char */*p*/,
+ size_t /*len*/,
+ Event */*data*/,
+ size_t */*size*/);
+
+int
+decode_GENERATION (
+ const unsigned char */*p*/,
+ size_t /*len*/,
+ GENERATION */*data*/,
+ size_t */*size*/);
+
+int
+decode_HDBFlags (
+ const unsigned char */*p*/,
+ size_t /*len*/,
+ HDBFlags */*data*/,
+ size_t */*size*/);
+
+int
+decode_HDB_Ext_Aliases (
+ const unsigned char */*p*/,
+ size_t /*len*/,
+ HDB_Ext_Aliases */*data*/,
+ size_t */*size*/);
+
+int
+decode_HDB_Ext_Constrained_delegation_acl (
+ const unsigned char */*p*/,
+ size_t /*len*/,
+ HDB_Ext_Constrained_delegation_acl */*data*/,
+ size_t */*size*/);
+
+int
+decode_HDB_Ext_Lan_Manager_OWF (
+ const unsigned char */*p*/,
+ size_t /*len*/,
+ HDB_Ext_Lan_Manager_OWF */*data*/,
+ size_t */*size*/);
+
+int
+decode_HDB_Ext_PKINIT_acl (
+ const unsigned char */*p*/,
+ size_t /*len*/,
+ HDB_Ext_PKINIT_acl */*data*/,
+ size_t */*size*/);
+
+int
+decode_HDB_Ext_PKINIT_certificate (
+ const unsigned char */*p*/,
+ size_t /*len*/,
+ HDB_Ext_PKINIT_certificate */*data*/,
+ size_t */*size*/);
+
+int
+decode_HDB_Ext_Password (
+ const unsigned char */*p*/,
+ size_t /*len*/,
+ HDB_Ext_Password */*data*/,
+ size_t */*size*/);
+
+int
+decode_HDB_extension (
+ const unsigned char */*p*/,
+ size_t /*len*/,
+ HDB_extension */*data*/,
+ size_t */*size*/);
+
+int
+decode_HDB_extensions (
+ const unsigned char */*p*/,
+ size_t /*len*/,
+ HDB_extensions */*data*/,
+ size_t */*size*/);
+
+int
+decode_Key (
+ const unsigned char */*p*/,
+ size_t /*len*/,
+ Key */*data*/,
+ size_t */*size*/);
+
+int
+decode_Salt (
+ const unsigned char */*p*/,
+ size_t /*len*/,
+ Salt */*data*/,
+ size_t */*size*/);
+
+int
+decode_hdb_entry (
+ const unsigned char */*p*/,
+ size_t /*len*/,
+ hdb_entry */*data*/,
+ size_t */*size*/);
+
+int
+encode_Event (
+ unsigned char */*p*/,
+ size_t /*len*/,
+ const Event */*data*/,
+ size_t */*size*/);
+
+int
+encode_GENERATION (
+ unsigned char */*p*/,
+ size_t /*len*/,
+ const GENERATION */*data*/,
+ size_t */*size*/);
+
+int
+encode_HDBFlags (
+ unsigned char */*p*/,
+ size_t /*len*/,
+ const HDBFlags */*data*/,
+ size_t */*size*/);
+
+int
+encode_HDB_Ext_Aliases (
+ unsigned char */*p*/,
+ size_t /*len*/,
+ const HDB_Ext_Aliases */*data*/,
+ size_t */*size*/);
+
+int
+encode_HDB_Ext_Constrained_delegation_acl (
+ unsigned char */*p*/,
+ size_t /*len*/,
+ const HDB_Ext_Constrained_delegation_acl */*data*/,
+ size_t */*size*/);
+
+int
+encode_HDB_Ext_Lan_Manager_OWF (
+ unsigned char */*p*/,
+ size_t /*len*/,
+ const HDB_Ext_Lan_Manager_OWF */*data*/,
+ size_t */*size*/);
+
+int
+encode_HDB_Ext_PKINIT_acl (
+ unsigned char */*p*/,
+ size_t /*len*/,
+ const HDB_Ext_PKINIT_acl */*data*/,
+ size_t */*size*/);
+
+int
+encode_HDB_Ext_PKINIT_certificate (
+ unsigned char */*p*/,
+ size_t /*len*/,
+ const HDB_Ext_PKINIT_certificate */*data*/,
+ size_t */*size*/);
+
+int
+encode_HDB_Ext_Password (
+ unsigned char */*p*/,
+ size_t /*len*/,
+ const HDB_Ext_Password */*data*/,
+ size_t */*size*/);
+
+int
+encode_HDB_extension (
+ unsigned char */*p*/,
+ size_t /*len*/,
+ const HDB_extension */*data*/,
+ size_t */*size*/);
+
+int
+encode_HDB_extensions (
+ unsigned char */*p*/,
+ size_t /*len*/,
+ const HDB_extensions */*data*/,
+ size_t */*size*/);
+
+int
+encode_Key (
+ unsigned char */*p*/,
+ size_t /*len*/,
+ const Key */*data*/,
+ size_t */*size*/);
+
+int
+encode_Salt (
+ unsigned char */*p*/,
+ size_t /*len*/,
+ const Salt */*data*/,
+ size_t */*size*/);
+
+int
+encode_hdb_entry (
+ unsigned char */*p*/,
+ size_t /*len*/,
+ const hdb_entry */*data*/,
+ size_t */*size*/);
+
+void
+free_Event (Event */*data*/);
+
+void
+free_GENERATION (GENERATION */*data*/);
+
+void
+free_HDBFlags (HDBFlags */*data*/);
+
+void
+free_HDB_Ext_Aliases (HDB_Ext_Aliases */*data*/);
+
+void
+free_HDB_Ext_Constrained_delegation_acl (HDB_Ext_Constrained_delegation_acl */*data*/);
+
+void
+free_HDB_Ext_Lan_Manager_OWF (HDB_Ext_Lan_Manager_OWF */*data*/);
+
+void
+free_HDB_Ext_PKINIT_acl (HDB_Ext_PKINIT_acl */*data*/);
+
+void
+free_HDB_Ext_PKINIT_certificate (HDB_Ext_PKINIT_certificate */*data*/);
+
+void
+free_HDB_Ext_Password (HDB_Ext_Password */*data*/);
+
+void
+free_HDB_extension (HDB_extension */*data*/);
+
+void
+free_HDB_extensions (HDB_extensions */*data*/);
+
+void
+free_Key (Key */*data*/);
+
+void
+free_Salt (Salt */*data*/);
+
+void
+free_hdb_entry (hdb_entry */*data*/);
+
krb5_error_code
hdb_add_master_key (
krb5_context /*context*/,
@@ -297,6 +608,54 @@ hdb_write_master_key (
const char */*filename*/,
hdb_master_key /*mkey*/);
+void
+initialize_hdb_error_table_r (struct et_list **/*list*/);
+
+HDBFlags
+int2HDBFlags (unsigned /*n*/);
+
+size_t
+length_Event (const Event */*data*/);
+
+size_t
+length_GENERATION (const GENERATION */*data*/);
+
+size_t
+length_HDBFlags (const HDBFlags */*data*/);
+
+size_t
+length_HDB_Ext_Aliases (const HDB_Ext_Aliases */*data*/);
+
+size_t
+length_HDB_Ext_Constrained_delegation_acl (const HDB_Ext_Constrained_delegation_acl */*data*/);
+
+size_t
+length_HDB_Ext_Lan_Manager_OWF (const HDB_Ext_Lan_Manager_OWF */*data*/);
+
+size_t
+length_HDB_Ext_PKINIT_acl (const HDB_Ext_PKINIT_acl */*data*/);
+
+size_t
+length_HDB_Ext_PKINIT_certificate (const HDB_Ext_PKINIT_certificate */*data*/);
+
+size_t
+length_HDB_Ext_Password (const HDB_Ext_Password */*data*/);
+
+size_t
+length_HDB_extension (const HDB_extension */*data*/);
+
+size_t
+length_HDB_extensions (const HDB_extensions */*data*/);
+
+size_t
+length_Key (const Key */*data*/);
+
+size_t
+length_Salt (const Salt */*data*/);
+
+size_t
+length_hdb_entry (const hdb_entry */*data*/);
+
#ifdef __cplusplus
}
#endif
diff --git a/source4/heimdal/lib/hdb/hdb.c b/source4/heimdal/lib/hdb/hdb.c
index 53c952927f..8233eb6ac7 100644
--- a/source4/heimdal/lib/hdb/hdb.c
+++ b/source4/heimdal/lib/hdb/hdb.c
@@ -33,7 +33,7 @@
#include "hdb_locl.h"
-RCSID("$Id: hdb.c,v 1.54 2005/05/29 18:12:28 lha Exp $");
+RCSID("$Id: hdb.c,v 1.55 2005/08/19 13:07:03 lha Exp $");
#ifdef HAVE_DLFCN_H
#include <dlfcn.h>
@@ -174,9 +174,14 @@ hdb_check_db_format(krb5_context context, HDB *db)
unsigned ver;
int foo;
+ ret = db->hdb_lock(context, db, HDB_RLOCK);
+ if (ret)
+ return ret;
+
tag.data = HDB_DB_FORMAT_ENTRY;
tag.length = strlen(tag.data);
ret = (*db->hdb__get)(context, db, tag, &version);
+ db->hdb_unlock(context, db);
if(ret)
return ret;
foo = sscanf(version.data, "%u", &ver);
@@ -200,12 +205,19 @@ hdb_init_db(krb5_context context, HDB *db)
if(ret != HDB_ERR_NOENTRY)
return ret;
+ ret = db->hdb_lock(context, db, HDB_WLOCK);
+ if (ret)
+ return ret;
+
tag.data = HDB_DB_FORMAT_ENTRY;
tag.length = strlen(tag.data);
snprintf(ver, sizeof(ver), "%u", HDB_DB_FORMAT);
version.data = ver;
version.length = strlen(version.data) + 1; /* zero terminated */
ret = (*db->hdb__put)(context, db, 0, tag, version);
+ ret = db->hdb_unlock(context, db);
+ if (ret)
+ return ret;
return ret;
}
diff --git a/source4/heimdal/lib/hdb/mkey.c b/source4/heimdal/lib/hdb/mkey.c
index 9e04dc6d8d..f12f73e809 100644
--- a/source4/heimdal/lib/hdb/mkey.c
+++ b/source4/heimdal/lib/hdb/mkey.c
@@ -36,7 +36,7 @@
#define O_BINARY 0
#endif
-RCSID("$Id: mkey.c,v 1.20 2005/08/10 08:41:03 lha Exp $");
+RCSID("$Id: mkey.c,v 1.21 2005/08/19 13:07:03 lha Exp $");
struct hdb_master_key_data {
krb5_keytab_entry keytab;
@@ -486,6 +486,9 @@ hdb_seal_key_mkey(krb5_context context, Key *k, hdb_master_key mkey)
krb5_data res;
hdb_master_key key;
+ if(k->mkvno != NULL)
+ return 0;
+
key = _hdb_find_master_key(k->mkvno, mkey);
if (key == NULL)