summaryrefslogtreecommitdiffstats
path: root/crypto/kerberosIV/lib/krb/create_ciph.c
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/kerberosIV/lib/krb/create_ciph.c')
-rw-r--r--crypto/kerberosIV/lib/krb/create_ciph.c44
1 files changed, 37 insertions, 7 deletions
diff --git a/crypto/kerberosIV/lib/krb/create_ciph.c b/crypto/kerberosIV/lib/krb/create_ciph.c
index 27d27ff..c22f01e 100644
--- a/crypto/kerberosIV/lib/krb/create_ciph.c
+++ b/crypto/kerberosIV/lib/krb/create_ciph.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: create_ciph.c,v 1.9 1997/04/01 08:18:20 joda Exp $");
+RCSID("$Id: create_ciph.c,v 1.12 1998/07/24 06:32:53 assar Exp $");
/*
* This routine is used by the authentication server to create
@@ -91,23 +91,53 @@ create_ciph(KTEXT c, /* Text block to hold ciphertext */
{
unsigned char *p = c->dat;
+ size_t rem = sizeof(c->dat);
+ int tmp;
memset(c, 0, sizeof(KTEXT_ST));
+ if (rem < 8)
+ return KFAILURE;
memcpy(p, session, 8);
p += 8;
+ rem -= 8;
- p += krb_put_nir(service, instance, realm, p);
+ tmp = krb_put_nir(service, instance, realm, p, rem);
+ if (tmp < 0)
+ return KFAILURE;
+ p += tmp;
+ rem -= tmp;
+
- p += krb_put_int(life, p, 1);
- p += krb_put_int(kvno, p, 1);
+ tmp = krb_put_int(life, p, rem, 1);
+ if (tmp < 0)
+ return KFAILURE;
+ p += tmp;
+ rem -= tmp;
+
+ tmp = krb_put_int(kvno, p, rem, 1);
+ if (tmp < 0)
+ return KFAILURE;
+ p += tmp;
+ rem -= tmp;
- p += krb_put_int(tkt->length, p, 1);
+ tmp = krb_put_int(tkt->length, p, rem, 1);
+ if (tmp < 0)
+ return KFAILURE;
+ p += tmp;
+ rem -= tmp;
+ if (rem < tkt->length)
+ return KFAILURE;
memcpy(p, tkt->dat, tkt->length);
p += tkt->length;
+ rem -= tkt->length;
- p += krb_put_int(kdc_time, p, 4);
+ tmp = krb_put_int(kdc_time, p, rem, 4);
+ if (tmp < 0)
+ return KFAILURE;
+ p += tmp;
+ rem -= tmp;
/* multiple of eight bytes */
c->length = (p - c->dat + 7) & ~7;
OpenPOWER on IntegriCloud