--- smbk5pwd.c~ 2008-05-28 18:11:05.000000000 +0200 +++ smbk5pwd.c 2008-05-28 18:10:46.000000000 +0200 @@ -368,6 +368,8 @@ struct berval *keys; int kvno, i; Attribute *a; + Key *local_keys; + size_t local_num_keys; if ( !SMBK5PWD_DO_KRB5( pi ) ) break; @@ -396,7 +398,16 @@ op->o_log_prefix, e->e_name.bv_val, 0 ); } - ret = _kadm5_set_keys(kadm_context, &ent, qpw->rs_new.bv_val); + /* _kadm5_set_keys is a private function, inline its code here */ + ret = hdb_generate_key_set_password(context, ent.principal, + qpw->rs_new.bv_val, &local_keys, &local_num_keys); + if (ret != 0) + break; + + hdb_free_keys(context, ent.keys.len, ent.keys.val); + ent.keys.val = local_keys; + ent.keys.len = local_num_keys; + hdb_seal_keys(context, db, &ent); krb5_free_principal( context, ent.principal ); @@ -415,7 +426,7 @@ } BER_BVZERO( &keys[i] ); - _kadm5_free_keys(kadm_context, ent.keys.len, ent.keys.val); + hdb_free_keys(context, ent.keys.len, ent.keys.val); if ( i != ent.keys.len ) { ber_bvarray_free( keys );