⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rd_err.c

📁 早期freebsd实现
💻 C
字号:
/* * $Source: /usr/src/kerberosIV/krb/RCS/rd_err.c,v $ * $Author: kfall $ * * Copyright 1986, 1987, 1988 by the Massachusetts Institute * of Technology. * * For copying and distribution information, please see the file * <mit-copyright.h>. * * This routine dissects a a Kerberos 'safe msg', * checking its integrity, and returning a pointer to the application * data contained and its length. * * Returns 0 (RD_AP_OK) for success or an error code (RD_AP_...) * * Steve Miller    Project Athena  MIT/DEC */#ifndef lintstatic char *rcsid_rd_err_c="$Header: /usr/src/kerberosIV/krb/RCS/rd_err.c,v 4.6 90/06/25 20:57:10 kfall Exp $";#endif /* lint */#include <mit-copyright.h>/* system include files */#include <stdio.h>#include <errno.h>#include <sys/types.h>#include <netinet/in.h>#include <sys/time.h>/* application include files */#include <des.h>#include <krb.h>#include <prot.h>/* * Given an AUTH_MSG_APPL_ERR message, "in" and its length "in_length", * return the error code from the message in "code" and the text in * "m_data" as follows: * *	m_data->app_data	points to the error text *	m_data->app_length	points to the length of the error text * * If all goes well, return RD_AP_OK.  If the version number * is wrong, return RD_AP_VERSION, and if it's not an AUTH_MSG_APPL_ERR * type message, return RD_AP_MSG_TYPE. * * The AUTH_MSG_APPL_ERR message format can be found in mk_err.c */intkrb_rd_err(in,in_length,code,m_data)    u_char *in;                 /* pointer to the msg received */    u_long in_length;           /* of in msg */    long *code;                 /* received error code */    MSG_DAT *m_data;{    register u_char *p;    int swap_bytes = 0;    p = in;                     /* beginning of message */    if (*p++ != KRB_PROT_VERSION)        return(RD_AP_VERSION);    if (((*p) & ~1) != AUTH_MSG_APPL_ERR)        return(RD_AP_MSG_TYPE);    if ((*p++ & 1) != HOST_BYTE_ORDER)        swap_bytes++;    /* safely get code */    bcopy((char *)p,(char *)code,sizeof(*code));    if (swap_bytes)        swap_u_long(*code);    p += sizeof(*code);         /* skip over */    m_data->app_data = p;       /* we're now at the error text                                 * message */    m_data->app_length = in_length;    return(RD_AP_OK);           /* OK == 0 */}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -