Loading CHANGES +12 −0 Original line number Diff line number Diff line Loading @@ -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 Loading STATUS +7 −1 Original line number Diff line number Diff line OpenSSL STATUS Last modified at ______________ $Date: 2000/09/21 20:29:00 $ ______________ $Date: 2000/09/21 21:00:19 $ DEVELOPMENT STATE Loading Loading @@ -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] Loading crypto/asn1/a_type.c +8 −6 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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); Loading Loading @@ -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; Loading @@ -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; Loading Loading @@ -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; Loading crypto/asn1/asn1.h +1 −0 Original line number Diff line number Diff line Loading @@ -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 */ Loading Loading
CHANGES +12 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
STATUS +7 −1 Original line number Diff line number Diff line OpenSSL STATUS Last modified at ______________ $Date: 2000/09/21 20:29:00 $ ______________ $Date: 2000/09/21 21:00:19 $ DEVELOPMENT STATE Loading Loading @@ -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] Loading
crypto/asn1/a_type.c +8 −6 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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); Loading Loading @@ -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; Loading @@ -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; Loading Loading @@ -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; Loading
crypto/asn1/asn1.h +1 −0 Original line number Diff line number Diff line Loading @@ -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 */ Loading