summaryrefslogtreecommitdiffstats
path: root/src/lib/gssapi/generic/util_token.c
diff options
context:
space:
mode:
authorTheodore Tso <tytso@mit.edu>1996-03-01 00:40:43 +0000
committerTheodore Tso <tytso@mit.edu>1996-03-01 00:40:43 +0000
commite62e3ad3d85c8988c047e787f8f64d9454e141ee (patch)
tree4f3f1349ed93e225f2bdc61ed36291bd1e0710ee /src/lib/gssapi/generic/util_token.c
parentd174a15290a1b04aa50442e22587ec8b56f850c3 (diff)
downloadkrb5-e62e3ad3d85c8988c047e787f8f64d9454e141ee.tar.gz
krb5-e62e3ad3d85c8988c047e787f8f64d9454e141ee.tar.xz
krb5-e62e3ad3d85c8988c047e787f8f64d9454e141ee.zip
Fix to work on 16-bit platforms (we don't allow greater than 64k
tokens on these platforms). git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@7576 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/gssapi/generic/util_token.c')
-rw-r--r--src/lib/gssapi/generic/util_token.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/lib/gssapi/generic/util_token.c b/src/lib/gssapi/generic/util_token.c
index d8e5e91aeb..e440d907a3 100644
--- a/src/lib/gssapi/generic/util_token.c
+++ b/src/lib/gssapi/generic/util_token.c
@@ -60,12 +60,17 @@ static int der_length_size(length)
return(1);
else if (length < (1<<8))
return(2);
+#if (SIZEOF_INT == 2)
+ else
+ return(3);
+#else
else if (length < (1<<16))
return(3);
else if (length < (1<<24))
return(4);
else
return(5);
+#endif
}
static void der_write_length(buf, length)
@@ -76,10 +81,12 @@ static void der_write_length(buf, length)
*(*buf)++ = (unsigned char) length;
} else {
*(*buf)++ = (unsigned char) (der_length_size(length)+127);
+#if (SIZEOF_INT > 2)
if (length >= (1<<24))
*(*buf)++ = (unsigned char) (length>>24);
if (length >= (1<<16))
*(*buf)++ = (unsigned char) ((length>>16)&0xff);
+#endif
if (length >= (1<<8))
*(*buf)++ = (unsigned char) ((length>>8)&0xff);
*(*buf)++ = (unsigned char) (length&0xff);
@@ -103,6 +110,8 @@ static int der_read_length(buf, bufsize)
if (sf & 0x80) {
if ((sf &= 0x7f) > ((*bufsize)-1))
return(-1);
+ if (sf > SIZEOF_INT)
+ return (-1);
ret = 0;
for (; sf; sf--) {
ret = (ret<<8) + (*(*buf)++);