From 8c41f54a3f56b11dfb3c8d9b86b192afb59c2abd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se>
Date: Sun, 30 Nov 1997 22:20:50 +0100
Subject: [PATCH] Fixed minor bog in to_base_128(0). Added more debug.

Rev: lib/modules/Standards.pmod/ASN1.pmod/Encode.pmod:1.2
---
 .../Standards.pmod/ASN1.pmod/Encode.pmod      | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/lib/modules/Standards.pmod/ASN1.pmod/Encode.pmod b/lib/modules/Standards.pmod/ASN1.pmod/Encode.pmod
index 9b38843ebe..257397c52a 100644
--- a/lib/modules/Standards.pmod/ASN1.pmod/Encode.pmod
+++ b/lib/modules/Standards.pmod/ASN1.pmod/Encode.pmod
@@ -20,6 +20,8 @@ class asn1_object
 
   string to_base_128(int n)
     {
+      if (!n)
+	return "\0";
       /* Convert tag number to base 128 */
       array(int) digits = ({ });
 
@@ -75,6 +77,10 @@ class asn1_compound
   void create(object ...args)
     {
       elements = args;
+      foreach(elements, mixed o)
+	if (!o || !objectp(o))
+	  throw( ({ "asn1_compound: Non-object argument!\n",
+		    backtrace() }) );
       WERROR(sprintf("asn1_compound: %O\n", elements));
     }
 }
@@ -195,7 +201,11 @@ class asn1_sequence
 
   string der()
     {
-      return build_der(`+("", @Array.map(elements, "der")));
+      WERROR(sprintf("asn1_sequence->der: elements = '%O\n",
+		     elements));
+      array(string) a = Array.map(elements, "der");
+      WERROR(sprintf("asn1_sequence->der: der(elements) = '%O\n", a));
+      return build_der(`+("", @ a));
     }
 }
 
@@ -223,10 +233,9 @@ class asn1_set
     {
       WERROR(sprintf("asn1_set->der: elements = '%O\n",
 		     elements));
-      WERROR(sprintf("asn1_set->der: der(elements) = '%O\n",
-		     Array.map(elements, "der")));
-      return build_der(`+("", @Array.sort_array(Array.map(elements, "der"),
-						compare_octet_strings)));
+      array(string) a = Array.map(elements, "der");
+      WERROR(sprintf("asn1_set->der: der(elements) = '%O\n", a));
+      return build_der(`+("", @Array.sort_array(a, compare_octet_strings)));
     }
 }
 
-- 
GitLab