diff options
author | markm <markm@FreeBSD.org> | 1999-09-19 14:19:32 +0000 |
---|---|---|
committer | markm <markm@FreeBSD.org> | 1999-09-19 14:19:32 +0000 |
commit | fe83e8abf357ee11114856a5278bb38431a9517c (patch) | |
tree | 36ce70fe2e8419130e546c38a7790e8ab224a362 /crypto/kerberosIV/lib/krb/create_auth_reply.c | |
parent | a8a89cfaf983bc64f4b42f7c35209a5a36dd0fe8 (diff) | |
download | FreeBSD-src-fe83e8abf357ee11114856a5278bb38431a9517c.zip FreeBSD-src-fe83e8abf357ee11114856a5278bb38431a9517c.tar.gz |
Clean import of KTH krb4-0.10.1.
Diffstat (limited to 'crypto/kerberosIV/lib/krb/create_auth_reply.c')
-rw-r--r-- | crypto/kerberosIV/lib/krb/create_auth_reply.c | 63 |
1 files changed, 48 insertions, 15 deletions
diff --git a/crypto/kerberosIV/lib/krb/create_auth_reply.c b/crypto/kerberosIV/lib/krb/create_auth_reply.c index 4976c46..f10d34c 100644 --- a/crypto/kerberosIV/lib/krb/create_auth_reply.c +++ b/crypto/kerberosIV/lib/krb/create_auth_reply.c @@ -38,7 +38,7 @@ #include "krb_locl.h" -RCSID("$Id: create_auth_reply.c,v 1.11 1997/04/01 08:18:20 joda Exp $"); +RCSID("$Id: create_auth_reply.c,v 1.14 1998/06/13 00:06:59 assar Exp $"); /* * This routine is called by the Kerberos authentication server @@ -98,32 +98,65 @@ create_auth_reply(char *pname, /* Principal's name */ KTEXT pkt = &pkt_st; unsigned char *p = pkt->dat; + int tmp; + size_t rem = sizeof(pkt->dat); - p += krb_put_int(KRB_PROT_VERSION, p, 1); - p += krb_put_int(AUTH_MSG_KDC_REPLY, p, 1); - - if(n != 0){ - /* barf on old code */ - krb_warning("create_auth_reply: don't give me no krb3 crap!" - " (n == %d)\n", n); + if(n != 0) + return NULL; + + tmp = krb_put_int(KRB_PROT_VERSION, p, rem, 1); + if (tmp < 0) return NULL; - } + p += tmp; + rem -= tmp; + tmp = krb_put_int(AUTH_MSG_KDC_REPLY, p, rem, 1); + if (tmp < 0) + return NULL; + p += tmp; + rem -= tmp; - p += krb_put_nir(pname, pinst, prealm, p); + tmp = krb_put_nir(pname, pinst, prealm, p, rem); + if (tmp < 0) + return NULL; + p += tmp; + rem -= tmp; - p += krb_put_int(time_ws, p, 4); + tmp = krb_put_int(time_ws, p, rem, 4); + if (tmp < 0) + return NULL; + p += tmp; + rem -= tmp; - p += krb_put_int(n, p, 1); + tmp = krb_put_int(n, p, rem, 1); + if (tmp < 0) + return NULL; + p += tmp; + rem -= tmp; - p += krb_put_int(x_date, p, 4); + tmp = krb_put_int(x_date, p, rem, 4); + if (tmp < 0) + return NULL; + p += tmp; + rem -= tmp; - p += krb_put_int(kvno, p, 1); + tmp = krb_put_int(kvno, p, rem, 1); + if (tmp < 0) + return NULL; + p += tmp; + rem -= tmp; - p += krb_put_int(cipher->length, p, 2); + tmp = krb_put_int(cipher->length, p, rem, 2); + if (tmp < 0) + return NULL; + p += tmp; + rem -= tmp; + if (rem < cipher->length) + return NULL; memcpy(p, cipher->dat, cipher->length); p += cipher->length; + rem -= cipher->length; pkt->length = p - pkt->dat; |