Merge from main trunk.

This commit is contained in:
Richard Levitte 2000-09-21 21:00:20 +00:00
parent 9cfb6bbd29
commit 4839df4061
4 changed files with 28 additions and 7 deletions

12
CHANGES
View file

@ -4,6 +4,18 @@
Changes between 0.9.5a and 0.9.6 [xx XXX 2000]
*) Fix for a nasty bug in ASN1_TYPE handling. ASN1_TYPE is used for
a general "ANY" type, as such it should be able to decode anything
including tagged types. However it didn't check the class so it would
wrongly interpret tagged types in the same way as their universal
counterpart and unknown types were just rejected. Changed so that the
tagged and unknown types are handled in the same way as a SEQUENCE:
that is the encoding is stored intact. There is also a new type
"V_ASN1_OTHER" which is used when the class is not universal, in this
case we have no idea what the actual type is so we just lump them all
together.
[Steve Henson]
*) On VMS, stdout may very well lead to a file that is written to
in a record-oriented fashion. That means that every write() will
write a separate record, which will be read separately by the

8
STATUS
View file

@ -1,6 +1,6 @@
OpenSSL STATUS Last modified at
______________ $Date: 2000/09/21 20:29:00 $
______________ $Date: 2000/09/21 21:00:19 $
DEVELOPMENT STATE
@ -108,11 +108,17 @@
libraries. Tests pass as soon as
you make sure advapi32.lib gets
linked in. [FIXED]
VC-NT dynamic libs (NT4 SP6, VC6 SP4) - success
VC-WIN32 (W2K Pro SP1, VC6 SP3, PSDK Jul2000)- success
hpux-parisc-gcc (B.10.20, gcc 2.95.2) - success
hpux-parisc-cc (B.10.20, cc A.10.32.30) - success
hpux-parisc-gcc [engine] (B.10.20, gcc 2.95.2)- success
hpux-parisc-cc [engine] (B.10.20, cc A.10.32.30)- success
hpux-parisc2-cc (B.11.11) - success
hpux64-parisc2-cc (B.11.11) - success
Kevin Steves also mentions that "All the new
targets look good on my end with hp-ux 11.0."
MPE/iX-gcc - success
FreeBSD (2.2.5) - failed
Only having USE_TOD made speed.c issue an
error. [FIXED]

View file

@ -123,6 +123,8 @@ int i2d_ASN1_TYPE(ASN1_TYPE *a, unsigned char **pp)
break;
case V_ASN1_SET:
case V_ASN1_SEQUENCE:
case V_ASN1_OTHER:
default:
if (a->value.set == NULL)
r=0;
else
@ -159,6 +161,8 @@ ASN1_TYPE *d2i_ASN1_TYPE(ASN1_TYPE **a, unsigned char **pp, long length)
inf=ASN1_get_object(&q,&len,&tag,&xclass,length);
if (inf & 0x80) goto err;
/* If not universal tag we've no idea what it is */
if(xclass != V_ASN1_UNIVERSAL) tag = V_ASN1_OTHER;
ASN1_TYPE_component_free(ret);
@ -245,6 +249,8 @@ ASN1_TYPE *d2i_ASN1_TYPE(ASN1_TYPE **a, unsigned char **pp, long length)
break;
case V_ASN1_SET:
case V_ASN1_SEQUENCE:
case V_ASN1_OTHER:
default:
/* Sets and sequences are left complete */
if ((ret->value.set=ASN1_STRING_new()) == NULL) goto err;
ret->value.set->type=tag;
@ -252,9 +258,6 @@ ASN1_TYPE *d2i_ASN1_TYPE(ASN1_TYPE **a, unsigned char **pp, long length)
if (!ASN1_STRING_set(ret->value.set,p,(int)len)) goto err;
p+=len;
break;
default:
ASN1err(ASN1_F_D2I_ASN1_TYPE,ASN1_R_BAD_TYPE);
goto err;
}
ret->type=tag;
@ -333,10 +336,9 @@ static void ASN1_TYPE_component_free(ASN1_TYPE *a)
case V_ASN1_UNIVERSALSTRING:
case V_ASN1_BMPSTRING:
case V_ASN1_UTF8STRING:
ASN1_STRING_free((ASN1_STRING *)a->value.ptr);
break;
case V_ASN1_OTHER:
default:
/* MEMORY LEAK */
ASN1_STRING_free((ASN1_STRING *)a->value.ptr);
break;
}
a->type=0;

View file

@ -83,6 +83,7 @@ extern "C" {
#define V_ASN1_PRIMATIVE_TAG 0x1f
#define V_ASN1_APP_CHOOSE -2 /* let the recipient choose */
#define V_ASN1_OTHER -3 /* used in ASN1_TYPE */
#define V_ASN1_NEG 0x100 /* negative flag */