diff --git a/kadmin/server.c b/kadmin/server.c index 84dea3a9f..93e234810 100644 --- a/kadmin/server.c +++ b/kadmin/server.c @@ -242,6 +242,14 @@ kadmind_dispatch(void *kadm_handle, krb5_storage *sp) } break; } + case kadm_get_privs:{ + ret = kadm5_get_privs(kadm_handle, &mask); + sp->seek(sp, 0, SEEK_SET); + krb5_store_int32(sp, ret); + if(ret == 0) + krb5_store_int32(sp, mask); + break; + } default: krb5_warnx(context->context, "%s: UNKNOWN OP %d", client, cmd); sp->seek(sp, 0, SEEK_SET); diff --git a/lib/kadm5/kadm5_locl.h b/lib/kadm5/kadm5_locl.h index edd816ff3..c7e6be5f4 100644 --- a/lib/kadm5/kadm5_locl.h +++ b/lib/kadm5/kadm5_locl.h @@ -88,7 +88,8 @@ enum kadm_ops { kadm_rename, kadm_chpass, kadm_modify, - kadm_randkey + kadm_randkey, + kadm_get_privs }; #define KADMIN_APPL_VERSION "KADM0.0" @@ -144,4 +145,15 @@ _kadm5_setup_entry __P(( kadm5_principal_ent_t def, u_int32_t mask)); +kadm5_ret_t +_kadm5_string_to_privs __P(( + const char *s, + u_int32_t* privs)); + +kadm5_ret_t +_kadm5_privs_to_string __P(( + u_int32_t privs, + char *string, + size_t len)); + #endif /* __KADM5_LOCL_H__ */ diff --git a/lib/kadm5/server.c b/lib/kadm5/server.c index 84dea3a9f..93e234810 100644 --- a/lib/kadm5/server.c +++ b/lib/kadm5/server.c @@ -242,6 +242,14 @@ kadmind_dispatch(void *kadm_handle, krb5_storage *sp) } break; } + case kadm_get_privs:{ + ret = kadm5_get_privs(kadm_handle, &mask); + sp->seek(sp, 0, SEEK_SET); + krb5_store_int32(sp, ret); + if(ret == 0) + krb5_store_int32(sp, mask); + break; + } default: krb5_warnx(context->context, "%s: UNKNOWN OP %d", client, cmd); sp->seek(sp, 0, SEEK_SET);