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/cr_err_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/cr_err_reply.c')
-rw-r--r-- | crypto/kerberosIV/lib/krb/cr_err_reply.c | 50 |
1 files changed, 39 insertions, 11 deletions
diff --git a/crypto/kerberosIV/lib/krb/cr_err_reply.c b/crypto/kerberosIV/lib/krb/cr_err_reply.c index 2c1956a..3e82659 100644 --- a/crypto/kerberosIV/lib/krb/cr_err_reply.c +++ b/crypto/kerberosIV/lib/krb/cr_err_reply.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, 1996, 1997 Kungliga Tekniska Högskolan + * Copyright (c) 1995, 1996, 1997, 1998 Kungliga Tekniska Högskolan * (Royal Institute of Technology, Stockholm, Sweden). * All rights reserved. * @@ -38,7 +38,7 @@ #include "krb_locl.h" -RCSID("$Id: cr_err_reply.c,v 1.9 1997/04/01 08:18:19 joda Exp $"); +RCSID("$Id: cr_err_reply.c,v 1.10 1998/06/09 19:25:16 joda Exp $"); /* * This routine is used by the Kerberos authentication server to @@ -74,26 +74,54 @@ RCSID("$Id: cr_err_reply.c,v 1.9 1997/04/01 08:18:19 joda Exp $"); * string e_string error text */ -void +int cr_err_reply(KTEXT pkt, char *pname, char *pinst, char *prealm, u_int32_t time_ws, u_int32_t e, char *e_string) { unsigned char *p = pkt->dat; - - p += krb_put_int(KRB_PROT_VERSION, p, 1); - p += krb_put_int(AUTH_MSG_ERR_REPLY, p, 1); + int tmp; + size_t rem = sizeof(pkt->dat); + + tmp = krb_put_int(KRB_PROT_VERSION, p, rem, 1); + if (tmp < 0) + return -1; + p += tmp; + rem -= tmp; + + tmp = krb_put_int(AUTH_MSG_ERR_REPLY, p, rem, 1); + if (tmp < 0) + return -1; + p += tmp; + rem -= tmp; if (pname == NULL) pname = ""; if (pinst == NULL) pinst = ""; if (prealm == NULL) prealm = ""; - p += krb_put_nir(pname, pinst, prealm, p); - - p += krb_put_int(time_ws, p, 4); + tmp = krb_put_nir(pname, pinst, prealm, p, rem); + if (tmp < 0) + return -1; + p += tmp; + rem -= tmp; + + tmp = krb_put_int(time_ws, p, rem, 4); + if (tmp < 0) + return -1; + p += tmp; + rem -= tmp; - p += krb_put_int(e, p, 4); + tmp = krb_put_int(e, p, rem, 4); + if (tmp < 0) + return -1; + p += tmp; + rem -= tmp; - p += krb_put_string(e_string, p); + tmp = krb_put_string(e_string, p, rem); + if (tmp < 0) + return -1; + p += tmp; + rem -= tmp; pkt->length = p - pkt->dat; + return 0; } |