[openssl.org #2336] SKM_ASN1_SET_OF_d2i macro is broken

2014-09-08 Thread Rich Salz via RT
As described in the ticket, this got fixed.
--
Rich Salz, OpenSSL dev team; rs...@openssl.org

__
OpenSSL Project http://www.openssl.org
Development Mailing List   openssl-dev@openssl.org
Automated List Manager   majord...@openssl.org


[openssl.org #2336] SKM_ASN1_SET_OF_d2i macro is broken

2010-09-13 Thread Mattias Ellert via RT
Hi!

The attached test file does not compile:

$ gcc -o test.o -c test.c
test.c: In function 'd2i_X':
test.c:28: warning: pointer type mismatch in conditional expression

The problem can be tracked down to the SKM_ASN1_SET_OF_d2i in
safestack.h. If the macro is changed as in the attached patch the
compilation works.

Mattias


#include openssl/x509.h

#include openssl/asn1_mac.h

#include openssl/err.h



typedef struct X {

  STACK_OF(X509_EXTENSION) *ext;

} X;



X *X_new() {

  X* ret = NULL;

  ASN1_CTX c;

  M_ASN1_New_Malloc(ret, X);

  M_ASN1_New(ret-ext, sk_X509_EXTENSION_new_null);

  return(ret);

  M_ASN1_New_Error(5018);

}



void X_free(X *x) {

  if (!x) return;

  sk_X509_EXTENSION_pop_free(x-ext, X509_EXTENSION_free);

  OPENSSL_free(x);

}



X* d2i_X(X **x, const unsigned char **pp, long length) {

  M_ASN1_D2I_vars(x, X*, X_new);

  M_ASN1_D2I_Init();

  M_ASN1_D2I_start_sequence();

  M_ASN1_D2I_get_seq_opt_type(X509_EXTENSION, ret-ext, d2i_X509_EXTENSION, X509_EXTENSION_free);

  M_ASN1_D2I_Finish(x, X_free, 5019);

}

--- /usr/include/openssl/safestack.h	2010-06-04 16:29:26.0 +0200

+++ include/openssl/safestack.h	2010-09-13 09:04:17.969550072 +0200

@@ -179,7 +179,7 @@

 	sk_is_sorted(CHECKED_STACK_OF(type, st))

 

 #define	SKM_ASN1_SET_OF_d2i(type, st, pp, length, d2i_func, free_func, ex_tag, ex_class) \

-  (STACK_OF(type) *)d2i_ASN1_SET((STACK_OF(OPENSSL_BLOCK) **)CHECKED_STACK_OF(type, st), \

+  (STACK_OF(type) *)d2i_ASN1_SET((STACK_OF(OPENSSL_BLOCK) **)CHECKED_PTR_OF(STACK_OF(type)*, st), \

 pp, length, \

 CHECKED_D2I_OF(type, d2i_func), \

 CHECKED_SK_FREE_FUNC(type, free_func), \



smime.p7s
Description: S/MIME cryptographic signature