In crypto/asn1/a_int.c part of the recent bugfix for 0.9.6e the code
changes from using OPENSSL_malloc() to OPENSSL_realloc() (which seem
to mostly be wrappers round malloc/realloc).
On new systems passing NULL to realloc() makes it act like malloc(),
but on older ones (like sunos4) it doesn't (we get an error instead).
Here is a short patch:
--cut-here--
--- crypto/asn1/a_int.c.orig Wed Jun 5 14:12:55 2002
+++ crypto/asn1/a_int.c Wed Jul 31 20:11:24 2002
@@ -453,7 +453,15 @@
len=((j == 0)?0:((j/8)+1));
if (ret->length < len+4)
{
- unsigned char *new_data= OPENSSL_realloc(ret->data, len+4);
+ unsigned char *new_data;
+
+ /* Needed for older realloc() (e.g. on SunOS4) which
+ fails if ptr is null. 2002-07-31 JSP */
+ if (ret->data == NULL) {
+ new_data = OPENSSL_malloc(len+4);
+ } else {
+ new_data = OPENSSL_realloc(ret->data, len+4);
+ }
if (!new_data)
{
ASN1err(ASN1_F_BN_TO_ASN1_INTEGER,ERR_R_MALLOC_FAILURE);
--cut-here--
Otherwise the first attempt to allocate data (with this routine at
least), will fail (test/testca fails on such systems in the -sign
test).
Looking through the rest of the 0.9.6e patch I can't see any other
cases where realloc() is called like this but I might well have missed
some. I'm hoping that someone who understands the code better will
confirm/check this.
-- Jon
--
Jon Peatfield, DAMTP, Computer Officer, University of Cambridge
Telephone: +44 1223 3 37852 Mail: [EMAIL PROTECTED]
______________________________________________________________________
OpenSSL Project http://www.openssl.org
Development Mailing List [EMAIL PROTECTED]
Automated List Manager [EMAIL PROTECTED]
______________________________________________________________________
OpenSSL Project http://www.openssl.org
Development Mailing List [EMAIL PROTECTED]
Automated List Manager [EMAIL PROTECTED]