aboutsummaryrefslogtreecommitdiff
path: root/src/lib/kadm5/srv/svr_principal.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/kadm5/srv/svr_principal.c')
-rw-r--r--src/lib/kadm5/srv/svr_principal.c34
1 files changed, 23 insertions, 11 deletions
diff --git a/src/lib/kadm5/srv/svr_principal.c b/src/lib/kadm5/srv/svr_principal.c
index 18ab480..36ca2a1 100644
--- a/src/lib/kadm5/srv/svr_principal.c
+++ b/src/lib/kadm5/srv/svr_principal.c
@@ -199,7 +199,7 @@ kadm5_create_principal_3(void *server_handle,
CHECK_HANDLE(server_handle);
- krb5_db_clr_error();
+ krb5_clear_error_message(handle->context);
/*
* Argument sanity checking, and opening up the DB
@@ -380,6 +380,9 @@ kadm5_create_principal_3(void *server_handle,
}
}
+ /* In all cases key and the principal data is set, let the database provider know */
+ kdb.mask = mask | KADM5_KEY_DATA | KADM5_PRINCIPAL ;
+
/* store the new db entry */
ret = kdb_put_entry(handle, &kdb, &adb);
@@ -421,7 +424,7 @@ kadm5_delete_principal(void *server_handle, krb5_principal principal)
CHECK_HANDLE(server_handle);
- krb5_db_clr_error();
+ krb5_clear_error_message(handle->context);
if (principal == NULL)
return EINVAL;
@@ -469,7 +472,7 @@ kadm5_modify_principal(void *server_handle,
CHECK_HANDLE(server_handle);
- krb5_db_clr_error();
+ krb5_clear_error_message(handle->context);
if((mask & KADM5_PRINCIPAL) || (mask & KADM5_LAST_PWD_CHANGE) ||
(mask & KADM5_MOD_TIME) || (mask & KADM5_MOD_NAME) ||
@@ -628,6 +631,9 @@ kadm5_modify_principal(void *server_handle,
}
}
+ /* let the mask propagate to the database provider */
+ kdb.mask = mask;
+
ret = kdb_put_entry(handle, &kdb, &adb);
if (ret) goto done;
@@ -656,7 +662,7 @@ kadm5_rename_principal(void *server_handle,
CHECK_HANDLE(server_handle);
- krb5_db_clr_error();
+ krb5_clear_error_message(handle->context);
if (source == NULL || target == NULL)
return EINVAL;
@@ -711,7 +717,7 @@ kadm5_get_principal(void *server_handle, krb5_principal principal,
CHECK_HANDLE(server_handle);
- krb5_db_clr_error();
+ krb5_clear_error_message(handle->context);
/*
* In version 1, all the defined fields are always returned.
@@ -1289,7 +1295,7 @@ kadm5_chpass_principal_3(void *server_handle,
CHECK_HANDLE(server_handle);
- krb5_db_clr_error();
+ krb5_clear_error_message(handle->context);
hist_added = 0;
memset(&hist, 0, sizeof(hist));
@@ -1433,6 +1439,9 @@ kadm5_chpass_principal_3(void *server_handle,
if (ret)
goto done;
+ /* key data and attributes changed, let the database provider know */
+ kdb.mask = KADM5_KEY_DATA | KADM5_ATTRIBUTES /* | KADM5_CPW_FUNCTION */;
+
if ((ret = kdb_put_entry(handle, &kdb, &adb)))
goto done;
@@ -1478,13 +1487,13 @@ kadm5_randkey_principal_3(void *server_handle,
int ret, last_pwd, have_pol = 0;
kadm5_server_handle_t handle = server_handle;
- krb5_db_clr_error();
-
if (keyblocks)
*keyblocks = NULL;
CHECK_HANDLE(server_handle);
+ krb5_clear_error_message(handle->context);
+
if (principal == NULL)
return EINVAL;
if (hist_princ && /* this will be NULL when initializing the databse */
@@ -1580,6 +1589,9 @@ kadm5_randkey_principal_3(void *server_handle,
}
}
+ /* key data changed, let the database provider know */
+ kdb.mask = KADM5_KEY_DATA /* | KADM5_RANDKEY_USED */;
+
if ((ret = kdb_put_entry(handle, &kdb, &adb)))
goto done;
@@ -1616,12 +1628,12 @@ kadm5_setv4key_principal(void *server_handle,
kadm5_server_handle_t handle = server_handle;
krb5_key_data tmp_key_data;
- krb5_db_clr_error();
-
memset( &tmp_key_data, 0, sizeof(tmp_key_data));
CHECK_HANDLE(server_handle);
+ krb5_clear_error_message(handle->context);
+
if (principal == NULL || keyblock == NULL)
return EINVAL;
if (hist_princ && /* this will be NULL when initializing the databse */
@@ -1797,7 +1809,7 @@ kadm5_setkey_principal_3(void *server_handle,
CHECK_HANDLE(server_handle);
- krb5_db_clr_error();
+ krb5_clear_error_message(handle->context);
if (principal == NULL || keyblocks == NULL)
return EINVAL;