diff options
Diffstat (limited to 'crypto/heimdal/kadmin/server.c')
-rw-r--r-- | crypto/heimdal/kadmin/server.c | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/crypto/heimdal/kadmin/server.c b/crypto/heimdal/kadmin/server.c index adaf6cf..07dd9a5 100644 --- a/crypto/heimdal/kadmin/server.c +++ b/crypto/heimdal/kadmin/server.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997 - 2003 Kungliga Tekniska Högskolan + * Copyright (c) 1997 - 2005 Kungliga Tekniska Högskolan * (Royal Institute of Technology, Stockholm, Sweden). * All rights reserved. * @@ -34,7 +34,7 @@ #include "kadmin_locl.h" #include <krb5-private.h> -RCSID("$Id: server.c,v 1.38 2003/01/29 12:33:05 lha Exp $"); +RCSID("$Id: server.c 17611 2006-06-02 22:10:21Z lha $"); static kadm5_ret_t kadmind_dispatch(void *kadm_handle, krb5_boolean initial, @@ -47,7 +47,7 @@ kadmind_dispatch(void *kadm_handle, krb5_boolean initial, char *op = ""; krb5_principal princ, princ2; kadm5_principal_ent_rec ent; - char *password, *exp; + char *password, *expression; krb5_keyblock *new_keys; int n_keys; char **princs; @@ -192,6 +192,7 @@ kadmind_dispatch(void *kadm_handle, krb5_boolean initial, princ); if(ret){ krb5_free_principal(context->context, princ); + krb5_free_principal(context->context, princ2); goto fail; } ret = kadm5_rename_principal(kadm_handle, princ, princ2); @@ -370,12 +371,13 @@ kadmind_dispatch(void *kadm_handle, krb5_boolean initial, break; } case kadm_get_privs:{ - ret = kadm5_get_privs(kadm_handle, &mask); + uint32_t privs; + ret = kadm5_get_privs(kadm_handle, &privs); krb5_storage_free(sp); sp = krb5_storage_emem(); krb5_store_int32(sp, ret); if(ret == 0) - krb5_store_int32(sp, mask); + krb5_store_uint32(sp, privs); break; } case kadm_get_princs:{ @@ -384,19 +386,20 @@ kadmind_dispatch(void *kadm_handle, krb5_boolean initial, if(ret) goto fail; if(tmp){ - ret = krb5_ret_string(sp, &exp); + ret = krb5_ret_string(sp, &expression); if(ret) goto fail; }else - exp = NULL; - krb5_warnx(context->context, "%s: %s %s", client, op, exp ? exp : "*"); + expression = NULL; + krb5_warnx(context->context, "%s: %s %s", client, op, + expression ? expression : "*"); ret = _kadm5_acl_check_permission(context, KADM5_PRIV_LIST, NULL); if(ret){ - free(exp); + free(expression); goto fail; } - ret = kadm5_get_principals(kadm_handle, exp, &princs, &n_princs); - free(exp); + ret = kadm5_get_principals(kadm_handle, expression, &princs, &n_princs); + free(expression); krb5_storage_free(sp); sp = krb5_storage_emem(); krb5_store_int32(sp, ret); @@ -542,8 +545,6 @@ handle_v5(krb5_context context, v5_loop (context, ac, initial, kadm_handle, fd); } -extern int do_kerberos4; - krb5_error_code kadmind_loop(krb5_context context, krb5_auth_context ac, @@ -560,16 +561,15 @@ kadmind_loop(krb5_context context, if(n < 0) krb5_err(context, 1, errno, "read"); _krb5_get_int(tmp, &len, 4); + /* this v4 test could probably also go away */ if(len > 0xffff && (len & 0xffff) == ('K' << 8) + 'A') { - len >>= 16; -#ifdef KRB4 - if(do_kerberos4) - handle_v4(context, keytab, len, fd); - else - krb5_errx(context, 1, "version 4 kadmin is disabled"); -#else + unsigned char v4reply[] = { + 0x00, 0x0c, + 'K', 'Y', 'O', 'U', 'L', 'O', 'S', 'E', + 0x95, 0xb7, 0xa7, 0x08 /* KADM_BAD_VER */ + }; + krb5_net_write(context, &fd, v4reply, sizeof(v4reply)); krb5_errx(context, 1, "packet appears to be version 4"); -#endif } else { handle_v5(context, ac, keytab, len, fd); } |