freebsd-dev/eBones/lib/libkrb/mk_err.c
Mark Murray b1ebdd50cb Start the eBones cleanup ball rolling.
These are the start of a lot of work to clean up the FreeBSD eBones code.
these changes include, but are not limited to:
- Create prototypes for all the library routines
- Make all the libraries compile clean with -Wall set
- Fix numerous small bugs shown up in the above process
- Prepare the code for libdes's removal to secure/
- add register, registerd and make_keypair to the make
Lots more will follow in days to come.

OK'ed by: rgrimes
1995-08-25 22:52:32 +00:00

66 lines
1.7 KiB
C

/*
* Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
* of Technology.
* For copying and distribution information, please see the file
* <Copyright.MIT>.
*
* from: mk_err.c,v 4.4 88/11/15 16:33:36 jtkohl Exp $
* $Id: mk_err.c,v 1.3 1995/07/18 16:39:11 mark Exp $
*/
#if 0
#ifndef lint
static char *rcsid =
"$Id: mk_err.c,v 1.3 1995/07/18 16:39:11 mark Exp $";
#endif /* lint */
#endif
#include <sys/types.h>
#include <krb.h>
#include <prot.h>
#include <strings.h>
/*
* This routine creates a general purpose error reply message. It
* doesn't use KTEXT because application protocol may have long
* messages, and may want this part of buffer contiguous to other
* stuff.
*
* The error reply is built in "p", using the error code "e" and
* error text "e_string" given. The length of the error reply is
* returned.
*
* The error reply is in the following format:
*
* unsigned char KRB_PROT_VERSION protocol version no.
* unsigned char AUTH_MSG_APPL_ERR message type
* (least significant
* bit of above) HOST_BYTE_ORDER local byte order
* 4 bytes e given error code
* string e_string given error text
*/
long krb_mk_err(p,e,e_string)
u_char *p; /* Where to build error packet */
long e; /* Error code */
char *e_string; /* Text of error */
{
u_char *start;
start = p;
/* Create fixed part of packet */
*p++ = (unsigned char) KRB_PROT_VERSION;
*p = (unsigned char) AUTH_MSG_APPL_ERR;
*p++ |= HOST_BYTE_ORDER;
/* Add the basic info */
bcopy((char *)&e,(char *)p,4); /* err code */
p += sizeof(e);
(void) strcpy((char *)p,e_string); /* err text */
p += strlen(e_string);
/* And return the length */
return p-start;
}