summaryrefslogtreecommitdiffstats
path: root/src/kadmin/server/misc.c
diff options
context:
space:
mode:
authorKen Raeburn <raeburn@mit.edu>2010-03-17 06:00:56 +0000
committerKen Raeburn <raeburn@mit.edu>2010-03-17 06:00:56 +0000
commit17d926a4ce8bc2ede57a86f23948a3e9b68266a6 (patch)
treef8bcc310d4aae44f23eb49a427655d52a3ad4bf8 /src/kadmin/server/misc.c
parent1c2a27e980b7fbce4161579ec61087988fefe9cf (diff)
downloadkrb5-17d926a4ce8bc2ede57a86f23948a3e9b68266a6.tar.gz
krb5-17d926a4ce8bc2ede57a86f23948a3e9b68266a6.tar.xz
krb5-17d926a4ce8bc2ede57a86f23948a3e9b68266a6.zip
Merge users/raeburn/branches/network-merge
Re-integrates the forked versions of network.c in kdc and kadmin/server. Server-specific initialization and SIGHUP-reset code is moved into other source files; the more generic network-servicing code is merged and moved into apputils library already used by both programs. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@23811 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/kadmin/server/misc.c')
-rw-r--r--src/kadmin/server/misc.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/kadmin/server/misc.c b/src/kadmin/server/misc.c
index 375fbd151..b9212fa0f 100644
--- a/src/kadmin/server/misc.c
+++ b/src/kadmin/server/misc.c
@@ -9,6 +9,7 @@
#include <kadm5/server_internal.h>
#include <kadm5/server_acl.h>
#include "misc.h"
+#include "net-server.h"
/*
* Function: chpass_principal_wrapper_3
@@ -224,3 +225,47 @@ trunc_name(size_t *len, char **dots)
*dots = *len > MAXPRINCLEN ? "..." : "";
*len = *len > MAXPRINCLEN ? MAXPRINCLEN : *len;
}
+
+krb5_error_code
+make_toolong_error (void *handle, krb5_data **out)
+{
+ krb5_error errpkt;
+ krb5_error_code retval;
+ krb5_data *scratch;
+ kadm5_server_handle_t server_handle = (kadm5_server_handle_t)handle;
+
+ retval = krb5_us_timeofday(server_handle->context, &errpkt.stime, &errpkt.susec);
+ if (retval)
+ return retval;
+ errpkt.error = KRB_ERR_FIELD_TOOLONG;
+ retval = krb5_build_principal(server_handle->context, &errpkt.server,
+ strlen(server_handle->params.realm),
+ server_handle->params.realm,
+ "kadmin", "changepw", NULL);
+ if (retval)
+ return retval;
+ errpkt.client = NULL;
+ errpkt.cusec = 0;
+ errpkt.ctime = 0;
+ errpkt.text.length = 0;
+ errpkt.text.data = 0;
+ errpkt.e_data.length = 0;
+ errpkt.e_data.data = 0;
+ scratch = malloc(sizeof(*scratch));
+ if (scratch == NULL)
+ return ENOMEM;
+ retval = krb5_mk_error(server_handle->context, &errpkt, scratch);
+ if (retval) {
+ free(scratch);
+ return retval;
+ }
+
+ *out = scratch;
+ return 0;
+}
+
+krb5_context get_context(void *handle)
+{
+ kadm5_server_handle_t server_handle = (kadm5_server_handle_t)handle;
+ return server_handle->context;
+}