diff options
Diffstat (limited to 'crypto/kerberosIV/lib/krb/create_death_packet.c')
-rw-r--r-- | crypto/kerberosIV/lib/krb/create_death_packet.c | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/crypto/kerberosIV/lib/krb/create_death_packet.c b/crypto/kerberosIV/lib/krb/create_death_packet.c index f74ba30..ddc4c9a 100644 --- a/crypto/kerberosIV/lib/krb/create_death_packet.c +++ b/crypto/kerberosIV/lib/krb/create_death_packet.c @@ -38,7 +38,7 @@ #include "krb_locl.h" -RCSID("$Id: create_death_packet.c,v 1.8 1997/04/01 08:18:21 joda Exp $"); +RCSID("$Id: create_death_packet.c,v 1.9 1998/06/09 19:25:17 joda Exp $"); /* * This routine creates a packet to type AUTH_MSG_DIE which is sent to @@ -74,11 +74,29 @@ krb_create_death_packet(char *a_name) KTEXT pkt = &pkt_st; unsigned char *p = pkt->dat; - - p += krb_put_int(KRB_PROT_VERSION, p, 1); - p += krb_put_int(AUTH_MSG_DIE, p, 1); - - p += krb_put_string(a_name, p); + int tmp; + int rem = sizeof(pkt->dat); + + pkt->length = 0; + + 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_DIE, p, rem, 1); + if (tmp < 0) + return NULL; + p += tmp; + rem -= tmp; + + tmp = krb_put_string(a_name, p, rem); + if (tmp < 0) + return NULL; + p += tmp; + rem -= tmp; + pkt->length = p - pkt->dat; return pkt; } |