diff options
| author | Theodore Tso <tytso@mit.edu> | 1996-03-01 00:40:43 +0000 |
|---|---|---|
| committer | Theodore Tso <tytso@mit.edu> | 1996-03-01 00:40:43 +0000 |
| commit | e62e3ad3d85c8988c047e787f8f64d9454e141ee (patch) | |
| tree | 4f3f1349ed93e225f2bdc61ed36291bd1e0710ee /src/lib/gssapi/generic/util_token.c | |
| parent | d174a15290a1b04aa50442e22587ec8b56f850c3 (diff) | |
| download | krb5-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.c | 9 |
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)++); |
