diff options
author | Andrew Bartlett <abartlet@samba.org> | 2005-08-27 11:49:06 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:34:39 -0500 |
commit | 08730652fbf1c9f6d53378b1b094a2c5ddf2cf62 (patch) | |
tree | 077a628e42ccb9388e6ebbbe6ab068980b592554 /source4/heimdal/lib/hdb | |
parent | 02caf604be250e71b46619949cbbfa11543a3907 (diff) | |
download | samba-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.h | 359 | ||||
-rw-r--r-- | source4/heimdal/lib/hdb/hdb.c | 14 | ||||
-rw-r--r-- | source4/heimdal/lib/hdb/mkey.c | 5 |
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) |