Revert the part of r24157 which added the dal_version argument to the
authorGreg Hudson <ghudson@mit.edu>
Wed, 21 Jul 2010 19:01:35 +0000 (19:01 +0000)
committerGreg Hudson <ghudson@mit.edu>
Wed, 21 Jul 2010 19:01:35 +0000 (19:01 +0000)
init_library interface.  Instead use the already existing maj_ver
field of the DAL vtable to detect incompatibilities.  Since maj_ver
is a short int, use an incrementing number instead of a date for the
major version.

ticket: 6749

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@24200 dc483132-0cff-0310-8789-dd5450dbe970

src/include/kdb.h
src/lib/kdb/kdb5.c
src/plugins/kdb/db2/db2_exp.c
src/plugins/kdb/hdb/kdb_hdb.c
src/plugins/kdb/ldap/ldap_exp.c
src/plugins/kdb/ldap/libkdb_ldap/kdb_ldap.h
src/plugins/kdb/ldap/libkdb_ldap/kdb_ldap_conn.c

index e4970e72acfaa8c21949bf04f7558283a5361b73..d401fd5447cce0b670bb8563b684277a7d73288b 100644 (file)
@@ -742,11 +742,10 @@ krb5_dbe_free_tl_data(krb5_context, krb5_tl_data *);
 #define KRB5_KDB_OPT_SET_LOCK_MODE      1
 
 /*
- * This number indicates the date of the last incompatible change to the
- * DAL.  It is passed to init_library to allow KDB modules to detect when
- * they are being loaded by an incompatible version of the KDC.
+ * This number indicates the date of the last incompatible change to the DAL.
+ * The maj_ver field of the module's vtable structure must match this version.
  */
-#define KRB5_KDB_DAL_VERSION 20100714
+#define KRB5_KDB_DAL_MAJOR_VERSION 2
 
 /*
  * A krb5_context can hold one database object.  Modules should use
@@ -775,7 +774,7 @@ typedef struct _kdb_vftabl {
      * Mandatory: Invoked after the module library is loaded, when the first DB
      * using the module is opened, across all contexts.
      */
-    krb5_error_code (*init_library)(int dal_version);
+    krb5_error_code (*init_library)(void);
 
     /*
      * Mandatory: Invoked before the module library is unloaded, after the last
index 7d0b84ca2b9a07eb99bb663791563239088fe3b5..9786503005c8d1957d3f0462897d9eebbf2b3d61 100644 (file)
@@ -295,7 +295,7 @@ kdb_load_library(krb5_context kcontext, char *lib_name, db_library *libptr)
     memcpy(&lib->vftabl, vftabl_addr, sizeof(kdb_vftabl));
     kdb_setup_opt_functions(lib);
 
-    status = lib->vftabl.init_library(KRB5_KDB_DAL_VERSION);
+    status = lib->vftabl.init_library();
     if (status)
         goto cleanup;
 
@@ -389,10 +389,16 @@ kdb_load_library(krb5_context kcontext, char *lib_name, db_library * lib)
         goto clean_n_exit;
     }
 
+    if (((kdb_vftabl *)vftabl_addrs[0])->maj_ver !=
+        KRB5_KDB_DAL_MAJOR_VERSION) {
+        status = KRB5_KDB_DBTYPE_MISMATCH;
+        goto clean_n_exit;
+    }
+
     memcpy(&(*lib)->vftabl, vftabl_addrs[0], sizeof(kdb_vftabl));
     kdb_setup_opt_functions(*lib);
 
-    if ((status = (*lib)->vftabl.init_library(KRB5_KDB_DAL_VERSION)))
+    if ((status = (*lib)->vftabl.init_library()))
         goto clean_n_exit;
 
 clean_n_exit:
index 2de4bbcacbf346f59d13460163348fd3d07d3594..327a6b82203355309587734a5b13d6fb3800ba3d 100644 (file)
@@ -193,12 +193,10 @@ WRAP_VOID (krb5_db2_audit_as_req,
            (kcontext, request, client, server, authtime, error_code));
 
 static krb5_error_code
-hack_init (int dal_version)
+hack_init (void)
 {
     krb5_error_code c;
 
-    if (dal_version != KRB5_KDB_DAL_VERSION)
-        return KRB5_KDB_DBTYPE_MISMATCH;
     c = krb5int_mutex_alloc (&krb5_db2_mutex);
     if (c)
         return c;
@@ -219,7 +217,7 @@ hack_cleanup (void)
  */
 
 kdb_vftabl PLUGIN_SYMBOL_NAME(krb5_db2, kdb_function_table) = {
-    1,                                      /* major version number 1 */
+    KRB5_KDB_DAL_MAJOR_VERSION,             /* major version number */
     0,                                      /* minor version number 0 */
     /* init_library */                  hack_init,
     /* fini_library */                  hack_cleanup,
index 23039b7be71ad26b94d881dda6241830d976cbe3..460636ac1466d16da7aca913d0a57ebc9f5ad899 100644 (file)
 #include "kdb_hdb.h"
 
 static krb5_error_code
-kh_init(int dal_version)
+kh_init(void)
 {
-    if (dal_version != KRB5_KDB_DAL_VERSION)
-        return KRB5_KDB_DBTYPE_MISMATCH;
     return 0;
 }
 
@@ -1218,7 +1216,7 @@ kh_db_check_allowed_to_delegate(krb5_context context,
 }
 
 kdb_vftabl kdb_function_table = {
-    1,
+    KRB5_KDB_DAL_MAJOR_VERSION,
     0,
     kh_init,
     kh_fini,
index 55f10d9b665cce1f391c248a1c893a495edb3f39..069ee82305070467b15749bf56f040e4e3d28bb6 100644 (file)
@@ -47,7 +47,7 @@
  */
 
 kdb_vftabl PLUGIN_SYMBOL_NAME(krb5_ldap, kdb_function_table) = {
-    1,                                      /* major version number 1 */
+    KRB5_KDB_DAL_MAJOR_VERSION,             /* major version number */
     0,                                      /* minor version number 0 */
     /* init_library */                      krb5_ldap_lib_init,
     /* fini_library */                      krb5_ldap_lib_cleanup,
index 8531b8cc68b874067894d0ec6fe276d37701a6d6..1f998a48cbdb093e54222af27078006d80d9e807 100644 (file)
@@ -254,7 +254,7 @@ krb5_error_code
 krb5_ldap_get_age(krb5_context, char *, time_t *);
 
 krb5_error_code
-krb5_ldap_lib_init(int dal_version);
+krb5_ldap_lib_init(void);
 
 krb5_error_code
 krb5_ldap_lib_cleanup(void);
index 6749bce3282075e1f518dfcccf1d4d96d427f58c..82b0333cdd7034481425b4e2d363deff96ca2b3b 100644 (file)
@@ -312,10 +312,8 @@ krb5_ldap_rebind(krb5_ldap_context *ldap_context,
  *     DAL API functions
  */
 krb5_error_code
-krb5_ldap_lib_init(int dal_version)
+krb5_ldap_lib_init()
 {
-    if (dal_version != KRB5_KDB_DAL_VERSION)
-        return KRB5_KDB_DBTYPE_MISMATCH;
     return 0;
 }