I found the rule -- at least for C99. It is ISO 9899:1999 section =
6.2.5, rule 26 and footnote 39:

"26) A pointer to void shall have the same representation and alignment =
requirements as a
pointer to a character type. Similarly, pointers to qualified or =
unqualified versions of compatible types shall have the same =
representation and alignment requirements. All
pointers to structure types shall have the same representation and =
alignment requirements
as each other. All pointers to union types shall have the same =
representation and
alignment requirements as each other. Pointers to other types need not =
have the same representation or alignment requirements."

"39) The same representation and alignment requirements are meant to =
imply interchangeability as arguments to functions, return values from =
functions, and members of unions."

This means you cannot pass an 'X509 **' as a 'char **'. Unfortunately =
'X509 *' and 'char *' are not compatible types because 'X509' and 'char' =
are not compatible. They are not both unions, they are not both =
structures.

DS


__________________________________________________ ____________________
OpenSSL Project http://www.openssl.org
Development Mailing List openssl-dev@openssl.org
Automated List Manager majordomo@openssl.org