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                           [EMAIL PROTECTED]

Reply via email to