This is a discussion on [openssl.org #1296] openssl 0.9.8a/0.9.7g crashes on IA64 - Openssl ; [sam.sharma@gat.com - Wed Mar 29 02:30:32 2006]: > Hi > > I think fPIC is required, the code may not compile without fPIC. I will try > with other 0.9.7e/f/g version and let you know. Also on other 64bit systems ...
[sam.sharma@gat.com - Wed Mar 29 02:30:32 2006]:
> Hi
>
> I think fPIC is required, the code may not compile without fPIC. I
will try
> with other 0.9.7e/f/g version and let you know. Also on other 64bit
systems
> i.e. HP-UX, Solaris, Linux x86_64, SGI the openssl works just fine.
>
> The x_name.c file difference between 7d and 8a is not much as shown
below. I
> see that there are variable type changes and some defines.
>
> [srbkit@charm:ssl]$ diff 64/openssl-0.9.7d/crypto/asn1/x_name.c
> 64.8a/openssl-0.9.8a/crypto/asn1/x_name.c
> 64c64
> < static int x509_name_ex_d2i(ASN1_VALUE **val, unsigned char **in, long
> len, const ASN1_ITEM *it,
> ---
> > static int x509_name_ex_d2i(ASN1_VALUE **val, const unsigned char **in,
> long len, const ASN1_ITEM *it,
> 126c126
> < ASN1err(ASN1_F_X509_NAME_NEW, ERR_R_MALLOC_FAILURE);
> ---
> > ASN1err(ASN1_F_X509_NAME_EX_NEW, ERR_R_MALLOC_FAILURE);
> 159c159
> < static int x509_name_ex_d2i(ASN1_VALUE **val, unsigned char **in, long
> len, const ASN1_ITEM *it,
> ---
> > static int x509_name_ex_d2i(ASN1_VALUE **val, const unsigned char **in,
> long len, const ASN1_ITEM *it,
> 162,163c162,163
> < unsigned char *p = *in, *q;
> < STACK *intname = NULL;
> ---
> > const unsigned char *p = *in, *q;
> > STACK *intname = NULL, **intname_pp = &intname;
> 165c165
> < X509_NAME *nm = NULL;
> ---
> > X509_NAME *nm = NULL, **nm_pp = &nm;
> 171,172c171,173
> < ret = ASN1_item_ex_d2i((ASN1_VALUE **)&intname, &p, len,
> ASN1_ITEM_rptr(X509_NAME_INTERNAL),
> < tag,
aclass,
> opt, ctx);
> ---
> > ret = ASN1_item_ex_d2i((ASN1_VALUE **)intname_pp,
> > &p, len,
ASN1_ITEM_rptr(X509_NAME_INTERNAL),
> > tag, aclass, opt, ctx);
> 177c178
> < if(!x509_name_ex_new((ASN1_VALUE **)&nm, NULL)) goto err;
> ---
> > if(!x509_name_ex_new((ASN1_VALUE **)nm_pp, NULL)) goto err;
> 199c200
> < ASN1err(ASN1_F_D2I_X509_NAME, ERR_R_NESTED_ASN1_ERROR);
> ---
> > ASN1err(ASN1_F_X509_NAME_EX_D2I, ERR_R_NESTED_ASN1_ERROR);
> 221c222
> < STACK *intname = NULL;
> ---
> > STACK *intname = NULL, **intname_pp = &intname;
> 239c240,241
> < len = ASN1_item_ex_i2d((ASN1_VALUE **)&intname, NULL,
> ASN1_ITEM_rptr(X509_NAME_INTERNAL), -1, -1);
> ---
> > len = ASN1_item_ex_i2d((ASN1_VALUE **)intname_pp, NULL,
> > ASN1_ITEM_rptr(X509_NAME_INTERNAL), -1,
-1);
> 242c244,245
> < ASN1_item_ex_i2d((ASN1_VALUE **)&intname, &p,
> ASN1_ITEM_rptr(X509_NAME_INTERNAL), -1, -1);
> ---
> > ASN1_item_ex_i2d((ASN1_VALUE **)intname_pp,
> > &p, ASN1_ITEM_rptr(X509_NAME_INTERNAL), -1, -1);
> 248c251
> < ASN1err(ASN1_F_D2I_X509_NAME, ERR_R_MALLOC_FAILURE);
> ---
> > ASN1err(ASN1_F_X509_NAME_ENCODE, ERR_R_MALLOC_FAILURE);
>
>
This is starting to look more like a compiler bug. Those changes are
largely to avoid a "type puned" warning from newer versions of gcc and
should have no other effect. Have you tried substituting the old version
of that file into a newer version of OpenSSL and seeing what happens?
Steve.
__________________________________________________ ____________________
OpenSSL Project http://www.openssl.org
Development Mailing List openssl-dev@openssl.org
Automated List Manager majordomo@openssl.org