e-text)" for out-of-range codes where we haven't explicitly decided to return a
vague error message.
* do_as_req.c (prepare_error_as): New argument, the error message text as
determined *before* possibly replacing the error code with "generic error".
(process_as_req): Fill it in based on 'status', or the error message
corresponding to the error code to be returned.
* do_tgs_req.c (prepare_error_tgs): New argument, the error message text as
determined *before* possibly replacing the error code with "generic error".
(process_tgs_req): Fill it in based on 'status', or the error message
corresponding to the error code to be returned.
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@14835
dc483132-0cff-0310-8789-
dd5450dbe970
2002-09-10 Ken Raeburn <raeburn@mit.edu>
+ * do_as_req.c (prepare_error_as): New argument, the error message
+ text as determined *before* possibly replacing the error code with
+ "generic error".
+ (process_as_req): Fill it in based on 'status', or the error
+ message corresponding to the error code to be returned.
+ * do_tgs_req.c (prepare_error_tgs): New argument, the error
+ message text as determined *before* possibly replacing the error
+ code with "generic error".
+ (process_tgs_req): Fill it in based on 'status', or the error
+ message corresponding to the error code to be returned.
+
* network.c (process_packet): Call inet_ntop directly.
* sock2p.c: Deleted.
* Makefile.in (SRCS, OBJS): Drop it.
#include "extern.h"
static krb5_error_code prepare_error_as (krb5_kdc_req *, int, krb5_data *,
- krb5_data **);
+ krb5_data **, const char *);
/*ARGSUSED*/
krb5_error_code
errcode ? ", " : "",
errcode ? error_message(errcode) : "");
if (errcode) {
+ if (status == 0)
+ status = error_message (errcode);
errcode -= ERROR_TABLE_BASE_krb5;
if (errcode < 0 || errcode > 128)
errcode = KRB_ERR_GENERIC;
- errcode = prepare_error_as(request, errcode, &e_data, response);
+ errcode = prepare_error_as(request, errcode, &e_data, response,
+ status);
}
krb5_free_keyblock_contents(kdc_context, &encrypting_key);
}
static krb5_error_code
-prepare_error_as (request, error, e_data, response)
-register krb5_kdc_req *request;
-int error;
-krb5_data *e_data;
-krb5_data **response;
+prepare_error_as (krb5_kdc_req *request, int error, krb5_data *e_data,
+ krb5_data **response, const char *status)
{
krb5_error errpkt;
krb5_error_code retval;
errpkt.error = error;
errpkt.server = request->server;
errpkt.client = request->client;
- errpkt.text.length = strlen(error_message(error+KRB5KDC_ERR_NONE))+1;
+ errpkt.text.length = strlen(status)+1;
if (!(errpkt.text.data = malloc(errpkt.text.length)))
return ENOMEM;
- (void) strcpy(errpkt.text.data, error_message(error+KRB5KDC_ERR_NONE));
+ (void) strcpy(errpkt.text.data, status);
if (!(scratch = (krb5_data *)malloc(sizeof(*scratch)))) {
free(errpkt.text.data);
krb5_boolean *, int *);
static krb5_error_code prepare_error_tgs (krb5_kdc_req *, krb5_ticket *,
- int, const char *, krb5_data **);
+ int, const char *, krb5_data **,
+ const char *);
/*ARGSUSED*/
krb5_error_code
}
if (errcode) {
+ if (status == 0)
+ status = error_message (errcode);
errcode -= ERROR_TABLE_BASE_krb5;
if (errcode < 0 || errcode > 128)
errcode = KRB_ERR_GENERIC;
retval = prepare_error_tgs(request, header_ticket, errcode,
- fromstring, response);
+ fromstring, response, status);
}
if (header_ticket)
}
static krb5_error_code
-prepare_error_tgs (request, ticket, error, ident, response)
-register krb5_kdc_req *request;
-krb5_ticket *ticket;
-int error;
-const char *ident;
-krb5_data **response;
+prepare_error_tgs (krb5_kdc_req *request, krb5_ticket *ticket, int error,
+ const char *ident, krb5_data **response, const char *status)
{
krb5_error errpkt;
krb5_error_code retval;
errpkt.client = ticket->enc_part2->client;
else
errpkt.client = 0;
- errpkt.text.length = strlen(error_message(error+KRB5KDC_ERR_NONE))+1;
+ errpkt.text.length = strlen(status) + 1;
if (!(errpkt.text.data = malloc(errpkt.text.length)))
return ENOMEM;
- (void) strcpy(errpkt.text.data, error_message(error+KRB5KDC_ERR_NONE));
+ (void) strcpy(errpkt.text.data, status);
if (!(scratch = (krb5_data *)malloc(sizeof(*scratch)))) {
free(errpkt.text.data);
* some intermediate realm.
*/
static void
-find_alternate_tgs(request, server, more, nprincs)
-krb5_kdc_req *request;
-krb5_db_entry *server;
-krb5_boolean *more;
-int *nprincs;
+find_alternate_tgs(krb5_kdc_req *request, krb5_db_entry *server,
+ krb5_boolean *more, int *nprincs)
{
krb5_error_code retval;
krb5_principal *plist, *pl2;
krb5_free_realm_tree(kdc_context, plist);
return;
}
-