EVP_MD_CTX_type returns a type, so applying EVP_MD_type on its result goes too
far.  The compilation error on tru64 UNIX (ex Digital UNIX, ex OSF) is:

cc: Error: openssl_digest.xs, line 48: In this statement, "((((ctx)->digest)->type))" 
has a signed int type, but occurs in a context that requires a pointer. (needpointer)
                RETVAL.dptr=OBJ_nid2ln(EVP_MD_type(EVP_MD_CTX_type(ctx)));
---------------------------------------^

The output of -E on the source shows:

# 48 "openssl_digest.xs"
                RETVAL.dptr=OBJ_nid2ln( ( ( ( ( ( ctx ) -> digest ) -> type ) ) -> 
type ) );

The suggested fix, assuming a "type" is needed by OBJ_nid2ln:

grover:~/openssl-0.9.5a/perl> diff -r openssl_digest.xs{~,}
48c48
<               RETVAL.dptr=OBJ_nid2ln(EVP_MD_type(EVP_MD_CTX_type(ctx)));
---
>               RETVAL.dptr=OBJ_nid2ln(EVP_MD_CTX_type(ctx));
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to