Avoid use of function pointer casts in pem library. Modify safestack to
always use inline functions.
This commit is contained in:
parent
b948e2c59e
commit
297e6f1917
8
CHANGES
8
CHANGES
@ -93,10 +93,10 @@
|
|||||||
[Nils Larsch]
|
[Nils Larsch]
|
||||||
|
|
||||||
*) Initial incomplete changes to avoid need for function casts in OpenSSL
|
*) Initial incomplete changes to avoid need for function casts in OpenSSL
|
||||||
when OPENSSL_NO_FCAST is set: some compilers (gcc 4.2 and later) reject
|
some compilers (gcc 4.2 and later) reject their use. Safestack is
|
||||||
their use. Safestack is reimplemented using inline functions: tests show
|
reimplemented using inline functions: tests show that these calls are
|
||||||
that these calls are typically optimized away by compilers so they have
|
typically optimized away by compilers so they have no additional overhead.
|
||||||
no additional overhead. Update ASN1 to avoid use of legacy functions.
|
Update ASN1 to avoid use of legacy functions.
|
||||||
[Steve Henson]
|
[Steve Henson]
|
||||||
|
|
||||||
*) Win32/64 targets are linked with Winsock2.
|
*) Win32/64 targets are linked with Winsock2.
|
||||||
|
@ -421,9 +421,6 @@ errors:
|
|||||||
(cd engines; $(MAKE) PERL=$(PERL) errors)
|
(cd engines; $(MAKE) PERL=$(PERL) errors)
|
||||||
$(PERL) util/ck_errf.pl */*.c */*/*.c
|
$(PERL) util/ck_errf.pl */*.c */*/*.c
|
||||||
|
|
||||||
stacks:
|
|
||||||
$(PERL) util/mkstack.pl -write
|
|
||||||
|
|
||||||
util/libeay.num::
|
util/libeay.num::
|
||||||
$(PERL) util/mkdef.pl crypto update
|
$(PERL) util/mkdef.pl crypto update
|
||||||
|
|
||||||
@ -448,7 +445,7 @@ TABLE: Configure
|
|||||||
(echo 'Output of `Configure TABLE'"':"; \
|
(echo 'Output of `Configure TABLE'"':"; \
|
||||||
$(PERL) Configure TABLE) > TABLE
|
$(PERL) Configure TABLE) > TABLE
|
||||||
|
|
||||||
update: errors stacks util/libeay.num util/ssleay.num crypto/objects/obj_dat.h crypto/objects/obj_xref.h apps/openssl-vms.cnf crypto/bn/bn_prime.h TABLE depend
|
update: errors util/libeay.num util/ssleay.num crypto/objects/obj_dat.h crypto/objects/obj_xref.h apps/openssl-vms.cnf crypto/bn/bn_prime.h TABLE depend
|
||||||
|
|
||||||
# Build distribution tar-file. As the list of files returned by "find" is
|
# Build distribution tar-file. As the list of files returned by "find" is
|
||||||
# pretty long, on several platforms a "too many arguments" error or similar
|
# pretty long, on several platforms a "too many arguments" error or similar
|
||||||
|
@ -221,19 +221,19 @@ typedef struct pem_ctx_st
|
|||||||
#define IMPLEMENT_PEM_read_fp(name, type, str, asn1) \
|
#define IMPLEMENT_PEM_read_fp(name, type, str, asn1) \
|
||||||
type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u)\
|
type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u)\
|
||||||
{ \
|
{ \
|
||||||
return(((type *(*)(D2I_OF(type),char *,FILE *,type **,pem_password_cb *,void *))openssl_fcast(PEM_ASN1_read))(d2i_##asn1, str,fp,x,cb,u)); \
|
return PEM_ASN1_read((d2i_of_void *)d2i_##asn1, str,fp,(void **)x,cb,u); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define IMPLEMENT_PEM_write_fp(name, type, str, asn1) \
|
#define IMPLEMENT_PEM_write_fp(name, type, str, asn1) \
|
||||||
int PEM_write_##name(FILE *fp, type *x) \
|
int PEM_write_##name(FILE *fp, type *x) \
|
||||||
{ \
|
{ \
|
||||||
return(((int (*)(I2D_OF(type),const char *,FILE *,type *, const EVP_CIPHER *,unsigned char *,int, pem_password_cb *,void *))openssl_fcast(PEM_ASN1_write))(i2d_##asn1,str,fp,x,NULL,NULL,0,NULL,NULL)); \
|
return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,NULL,NULL,0,NULL,NULL); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) \
|
#define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) \
|
||||||
int PEM_write_##name(FILE *fp, const type *x) \
|
int PEM_write_##name(FILE *fp, const type *x) \
|
||||||
{ \
|
{ \
|
||||||
return(((int (*)(I2D_OF_const(type),const char *,FILE *, const type *, const EVP_CIPHER *,unsigned char *,int, pem_password_cb *,void *))openssl_fcast(PEM_ASN1_write))(i2d_##asn1,str,fp,x,NULL,NULL,0,NULL,NULL)); \
|
return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,(void *)x,NULL,NULL,0,NULL,NULL); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) \
|
#define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) \
|
||||||
@ -241,7 +241,7 @@ int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \
|
|||||||
unsigned char *kstr, int klen, pem_password_cb *cb, \
|
unsigned char *kstr, int klen, pem_password_cb *cb, \
|
||||||
void *u) \
|
void *u) \
|
||||||
{ \
|
{ \
|
||||||
return(((int (*)(I2D_OF(type),const char *,FILE *,type *, const EVP_CIPHER *,unsigned char *,int, pem_password_cb *,void *))openssl_fcast(PEM_ASN1_write))(i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u)); \
|
return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) \
|
#define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) \
|
||||||
@ -249,7 +249,7 @@ int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \
|
|||||||
unsigned char *kstr, int klen, pem_password_cb *cb, \
|
unsigned char *kstr, int klen, pem_password_cb *cb, \
|
||||||
void *u) \
|
void *u) \
|
||||||
{ \
|
{ \
|
||||||
return(((int (*)(I2D_OF_const(type),const char *,FILE *,type *, const EVP_CIPHER *,unsigned char *,int, pem_password_cb *,void *))openssl_fcast(PEM_ASN1_write))(i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u)); \
|
return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@ -257,33 +257,33 @@ int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \
|
|||||||
#define IMPLEMENT_PEM_read_bio(name, type, str, asn1) \
|
#define IMPLEMENT_PEM_read_bio(name, type, str, asn1) \
|
||||||
type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u)\
|
type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u)\
|
||||||
{ \
|
{ \
|
||||||
return(((type *(*)(D2I_OF(type),const char *,BIO *,type **,pem_password_cb *,void *))openssl_fcast(PEM_ASN1_read_bio))(d2i_##asn1, str,bp,x,cb,u)); \
|
return PEM_ASN1_read_bio((d2i_of_void *)d2i_##asn1, str,bp,(void **)x,cb,u); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define IMPLEMENT_PEM_write_bio(name, type, str, asn1) \
|
#define IMPLEMENT_PEM_write_bio(name, type, str, asn1) \
|
||||||
int PEM_write_bio_##name(BIO *bp, type *x) \
|
int PEM_write_bio_##name(BIO *bp, type *x) \
|
||||||
{ \
|
{ \
|
||||||
return(((int (*)(I2D_OF(type),const char *,BIO *,type *, const EVP_CIPHER *,unsigned char *,int, pem_password_cb *,void *))openssl_fcast(PEM_ASN1_write_bio))(i2d_##asn1,str,bp,x,NULL,NULL,0,NULL,NULL)); \
|
return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,x,NULL,NULL,0,NULL,NULL); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \
|
#define IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \
|
||||||
int PEM_write_bio_##name(BIO *bp, const type *x) \
|
int PEM_write_bio_##name(BIO *bp, const type *x) \
|
||||||
{ \
|
{ \
|
||||||
return(((int (*)(I2D_OF_const(type),const char *,BIO *,const type *, const EVP_CIPHER *,unsigned char *,int, pem_password_cb *,void *))openssl_fcast(PEM_ASN1_write_bio))(i2d_##asn1,str,bp,x,NULL,NULL,0,NULL,NULL)); \
|
return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,(void *)x,NULL,NULL,0,NULL,NULL); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \
|
#define IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \
|
||||||
int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \
|
int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \
|
||||||
unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \
|
unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \
|
||||||
{ \
|
{ \
|
||||||
return(((int (*)(I2D_OF(type),const char *,BIO *,type *,const EVP_CIPHER *,unsigned char *,int,pem_password_cb *,void *))openssl_fcast(PEM_ASN1_write_bio))(i2d_##asn1,str,bp,x,enc,kstr,klen,cb,u)); \
|
return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,x,enc,kstr,klen,cb,u); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \
|
#define IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \
|
||||||
int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \
|
int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \
|
||||||
unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \
|
unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \
|
||||||
{ \
|
{ \
|
||||||
return(((int (*)(I2D_OF_const(type),const char *,BIO *,type *,const EVP_CIPHER *,unsigned char *,int,pem_password_cb *,void *))openssl_fcast(PEM_ASN1_write_bio))(i2d_##asn1,str,bp,x,enc,kstr,klen,cb,u)); \
|
return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,(void *)x,enc,kstr,klen,cb,u); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define IMPLEMENT_PEM_write(name, type, str, asn1) \
|
#define IMPLEMENT_PEM_write(name, type, str, asn1) \
|
||||||
@ -416,7 +416,7 @@ void * PEM_ASN1_read_bio(d2i_of_void *d2i, const char *name, BIO *bp,
|
|||||||
void **x, pem_password_cb *cb, void *u);
|
void **x, pem_password_cb *cb, void *u);
|
||||||
#define PEM_ASN1_read_bio_of(type,d2i,name,bp,x,cb,u) \
|
#define PEM_ASN1_read_bio_of(type,d2i,name,bp,x,cb,u) \
|
||||||
((type *(*)(D2I_OF(type),const char *,BIO *,type **,pem_password_cb *,void *))openssl_fcast(PEM_ASN1_read_bio))(d2i,name,bp,x,cb,u)
|
((type *(*)(D2I_OF(type),const char *,BIO *,type **,pem_password_cb *,void *))openssl_fcast(PEM_ASN1_read_bio))(d2i,name,bp,x,cb,u)
|
||||||
int PEM_ASN1_write_bio(i2d_of_void *i2d,const char *name,BIO *bp,char *x,
|
int PEM_ASN1_write_bio(i2d_of_void *i2d,const char *name,BIO *bp, void *x,
|
||||||
const EVP_CIPHER *enc,unsigned char *kstr,int klen,
|
const EVP_CIPHER *enc,unsigned char *kstr,int klen,
|
||||||
pem_password_cb *cb, void *u);
|
pem_password_cb *cb, void *u);
|
||||||
#define PEM_ASN1_write_bio_of(type,i2d,name,bp,x,enc,kstr,klen,cb,u) \
|
#define PEM_ASN1_write_bio_of(type,i2d,name,bp,x,enc,kstr,klen,cb,u) \
|
||||||
@ -433,7 +433,7 @@ int PEM_write(FILE *fp,char *name,char *hdr,unsigned char *data,long len);
|
|||||||
void * PEM_ASN1_read(d2i_of_void *d2i, const char *name, FILE *fp, void **x,
|
void * PEM_ASN1_read(d2i_of_void *d2i, const char *name, FILE *fp, void **x,
|
||||||
pem_password_cb *cb, void *u);
|
pem_password_cb *cb, void *u);
|
||||||
int PEM_ASN1_write(i2d_of_void *i2d,const char *name,FILE *fp,
|
int PEM_ASN1_write(i2d_of_void *i2d,const char *name,FILE *fp,
|
||||||
char *x,const EVP_CIPHER *enc,unsigned char *kstr,
|
void *x,const EVP_CIPHER *enc,unsigned char *kstr,
|
||||||
int klen,pem_password_cb *callback, void *u);
|
int klen,pem_password_cb *callback, void *u);
|
||||||
STACK_OF(X509_INFO) * PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk,
|
STACK_OF(X509_INFO) * PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk,
|
||||||
pem_password_cb *cb, void *u);
|
pem_password_cb *cb, void *u);
|
||||||
|
@ -301,7 +301,7 @@ err:
|
|||||||
|
|
||||||
#ifndef OPENSSL_NO_FP_API
|
#ifndef OPENSSL_NO_FP_API
|
||||||
int PEM_ASN1_write(i2d_of_void *i2d, const char *name, FILE *fp,
|
int PEM_ASN1_write(i2d_of_void *i2d, const char *name, FILE *fp,
|
||||||
char *x, const EVP_CIPHER *enc, unsigned char *kstr,
|
void *x, const EVP_CIPHER *enc, unsigned char *kstr,
|
||||||
int klen, pem_password_cb *callback, void *u)
|
int klen, pem_password_cb *callback, void *u)
|
||||||
{
|
{
|
||||||
BIO *b;
|
BIO *b;
|
||||||
@ -320,7 +320,7 @@ int PEM_ASN1_write(i2d_of_void *i2d, const char *name, FILE *fp,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name, BIO *bp,
|
int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name, BIO *bp,
|
||||||
char *x, const EVP_CIPHER *enc, unsigned char *kstr,
|
void *x, const EVP_CIPHER *enc, unsigned char *kstr,
|
||||||
int klen, pem_password_cb *callback, void *u)
|
int klen, pem_password_cb *callback, void *u)
|
||||||
{
|
{
|
||||||
EVP_CIPHER_CTX ctx;
|
EVP_CIPHER_CTX ctx;
|
||||||
|
@ -148,8 +148,8 @@ int PEM_write_bio_PrivateKey(BIO *bp, EVP_PKEY *x, const EVP_CIPHER *enc,
|
|||||||
cb, u);
|
cb, u);
|
||||||
|
|
||||||
BIO_snprintf(pem_str, 80, "%s PRIVATE KEY", x->ameth->pem_str);
|
BIO_snprintf(pem_str, 80, "%s PRIVATE KEY", x->ameth->pem_str);
|
||||||
return PEM_ASN1_write_bio((i2d_of_void *)openssl_fcast(i2d_PrivateKey),
|
return PEM_ASN1_write_bio((i2d_of_void *)i2d_PrivateKey,
|
||||||
pem_str,bp,(char *)x,enc,kstr,klen,cb,u);
|
pem_str,bp,x,enc,kstr,klen,cb,u);
|
||||||
}
|
}
|
||||||
|
|
||||||
EVP_PKEY *PEM_read_bio_Parameters(BIO *bp, EVP_PKEY **x)
|
EVP_PKEY *PEM_read_bio_Parameters(BIO *bp, EVP_PKEY **x)
|
||||||
@ -201,8 +201,8 @@ int PEM_write_bio_Parameters(BIO *bp, EVP_PKEY *x)
|
|||||||
|
|
||||||
BIO_snprintf(pem_str, 80, "%s PARAMETERS", x->ameth->pem_str);
|
BIO_snprintf(pem_str, 80, "%s PARAMETERS", x->ameth->pem_str);
|
||||||
return PEM_ASN1_write_bio(
|
return PEM_ASN1_write_bio(
|
||||||
(i2d_of_void *)openssl_fcast(x->ameth->param_encode),
|
(i2d_of_void *)x->ameth->param_encode,
|
||||||
pem_str,bp,(char *)x,NULL,NULL,0,0,NULL);
|
pem_str,bp,x,NULL,NULL,0,0,NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef OPENSSL_NO_FP_API
|
#ifndef OPENSSL_NO_FP_API
|
||||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user