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