> Hi All, > > >From OpenSSL RT: > http://rt.openssl.org/Ticket/Display.html?id=3278&user=guest&pass=guest > > len can be 0 as well, and in which case, memory isn't freed.
Correct. If successful, data is actually a malloc(len + 1), thus if len == 0, we leak a \0 byte... > Patch from Frantisek Boranek: > > Index: lib/libssl/src/crypto/pkcs12/p12_kiss.c > =================================================================== > RCS file: /cvs/src/lib/libssl/src/crypto/pkcs12/p12_kiss.c,v > retrieving revision 1.12 > diff -u -p -u -p -r1.12 p12_kiss.c > --- lib/libssl/src/crypto/pkcs12/p12_kiss.c 17 Apr 2014 13:37:49 -0000 > 1.12 > +++ lib/libssl/src/crypto/pkcs12/p12_kiss.c 4 Jun 2014 09:08:37 -0000 > @@ -269,7 +269,7 @@ static int parse_bag(PKCS12_SAFEBAG *bag > int len, r; > unsigned char *data; > len = ASN1_STRING_to_UTF8(&data, fname); > - if(len > 0) { > + if(len >= 0) { > r = X509_alias_set1(x509, data, len); > free(data); > if (!r) >