Fixed bugs in completeBER and (serious one in) ber_oid.
authorSebastian Hammer <quinn@indexdata.com>
Tue, 14 Feb 1995 20:39:54 +0000 (20:39 +0000)
committerSebastian Hammer <quinn@indexdata.com>
Tue, 14 Feb 1995 20:39:54 +0000 (20:39 +0000)
odr/ber_any.c
odr/ber_oid.c

index 84d07a6..35c0a83 100644 (file)
@@ -4,7 +4,10 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: ber_any.c,v $
- * Revision 1.4  1995-02-14 11:54:33  quinn
+ * Revision 1.5  1995-02-14 20:39:54  quinn
+ * Fixed bugs in completeBER and (serious one in) ber_oid.
+ *
+ * Revision 1.4  1995/02/14  11:54:33  quinn
  * Adjustments.
  *
  * Revision 1.3  1995/02/10  18:57:24  quinn
@@ -54,6 +57,8 @@ int completeBER(unsigned char *buf, int len)
     int res, ll, class, tag, cons;
     unsigned char *b = buf;
     
+    if (!len)
+       return 0;
     if (!buf[0] && !buf[1])
        return 0;
     if ((res = ber_dectag(b, &class, &tag, &cons)) <= 0)
@@ -72,15 +77,15 @@ int completeBER(unsigned char *buf, int len)
        return (len >= ll ? ll + (b-buf) : 0);
     if (!cons)
        return 0;    
-    while (1)
+    /* constructed - cycle through children */
+    while (len >= 2)
     {
+       if (*b == 0 && *(b + 1) == 0)
+           break;
        if (!(res = completeBER(b, len)))
            return 0;
        b += res;
        len -= res;
-       if (len < 2)
-           return 0;
-       if (*b == 0 && *(b + 1) == 0)
-           return (b - buf) + 2;
     }
+    return (b - buf) + 2;
 }
index 07f2ae3..b2c6d11 100644 (file)
@@ -4,7 +4,10 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: ber_oid.c,v $
- * Revision 1.1  1995-02-03 17:04:36  quinn
+ * Revision 1.2  1995-02-14 20:39:55  quinn
+ * Fixed bugs in completeBER and (serious one in) ber_oid.
+ *
+ * Revision 1.1  1995/02/03  17:04:36  quinn
  * Initial revision
  *
  */
@@ -72,7 +75,7 @@ int ber_oid(ODR o, Odr_oid *p)
                n = 0;
                do
                {
-                   octs[n++] = id &= 0X7F;
+                   octs[n++] = id & 0X7F;
                    id >>= 7;
                }
                while (id);