Fix to work on 16-bit platforms (we don't allow greater than 64k
authorTheodore Tso <tytso@mit.edu>
Fri, 1 Mar 1996 00:40:43 +0000 (00:40 +0000)
committerTheodore Tso <tytso@mit.edu>
Fri, 1 Mar 1996 00:40:43 +0000 (00:40 +0000)
tokens on these platforms).

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@7576 dc483132-0cff-0310-8789-dd5450dbe970

src/lib/gssapi/generic/ChangeLog
src/lib/gssapi/generic/util_token.c

index df5842944e2773551b67d8ec399266e7b1a8795d..d385e54ab24cb19d9693a25b0ecc414cfcdc5501 100644 (file)
@@ -1,3 +1,9 @@
+Thu Feb 29 19:39:23 1996  Theodore Y. Ts'o  <tytso@dcl>
+
+       * util_token.c (der_length_size, der_write_size): Fix to work on
+               16-bit platforms (we don't allow greater than 64k tokens
+               on these platforms).
+
 Tue Feb 27 17:49:54 1996  Theodore Y. Ts'o  <tytso@dcl>
 
        * gssapi.h (size_t): Make sure size_t and uid_t are defined under
index d8e5e91aebe5795ed6ebb5035998daa76c780f5c..e440d907a3250afc8529931ebe29c20532d2dc4b 100644 (file)
@@ -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)++);