From: Dr. Stephen Henson Date: Fri, 22 Jun 2007 12:17:52 +0000 (+0000) Subject: Avoid warnings. Fix fips_dssvs program. X-Git-Tag: FIPS_098_TEST_1~10 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=ddb0cb5bfd72e8fc5d9b33047e22106b934ef66f;p=oweals%2Fopenssl.git Avoid warnings. Fix fips_dssvs program. --- diff --git a/Configure b/Configure index 14c1500524..bb35763882 100755 --- a/Configure +++ b/Configure @@ -157,7 +157,7 @@ my %table=( "debug-rse","cc:-DTERMIOS -DL_ENDIAN -pipe -O -g -ggdb3 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}", "debug-bodo", "gcc:-DL_ENDIAN -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBIO_PAIR_DEBUG -DPEDANTIC -g -march=i486 -pedantic -Wshadow -Wall::-D_REENTRANT:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}", "debug-ulf", "gcc:-DTERMIOS -DL_ENDIAN -march=i486 -Wall -DBN_DEBUG -DBN_DEBUG_RAND -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -g -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations:::CYGWIN32:::${no_asm}:win32:cygwin-shared:::.dll", -"debug-steve", "gcc:-DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DPEDANTIC -g -march=i486 -pedantic -Wno-long-long -Wall -Werror -Wshadow -pipe::-D_REENTRANT::-rdynamic -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared", +"debug-steve", "gcc:-DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DPEDANTIC -g -m32 -pedantic -Wno-long-long -Wall -Werror -Wshadow -pipe::-D_REENTRANT::-rdynamic -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared", "debug-steve-linux-pseudo64", "gcc:-DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DOPENSSL_NO_ASM -g -mcpu=i486 -Wall -Werror -Wshadow -pipe::-D_REENTRANT::-rdynamic -ldl:SIXTY_FOUR_BIT:${no_asm}:dlfcn:linux-shared", "debug-levitte-linux-elf","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", "debug-levitte-linux-noasm","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", diff --git a/apps/ocsp.c b/apps/ocsp.c index 3ee6dfb5ed..3dc36c4bdc 100644 --- a/apps/ocsp.c +++ b/apps/ocsp.c @@ -1227,7 +1227,7 @@ static int send_ocsp_response(BIO *cbio, OCSP_RESPONSE *resp) return 0; BIO_printf(cbio, http_resp, i2d_OCSP_RESPONSE(resp, NULL)); i2d_OCSP_RESPONSE_bio(cbio, resp); - BIO_flush(cbio); + (void)BIO_flush(cbio); return 1; } diff --git a/apps/rand.c b/apps/rand.c index a893896033..c3b26c466d 100644 --- a/apps/rand.c +++ b/apps/rand.c @@ -213,7 +213,7 @@ int MAIN(int argc, char **argv) BIO_write(out, buf, chunk); num -= chunk; } - BIO_flush(out); + (void)BIO_flush(out); app_RAND_write_file(NULL, bio_err); ret = 0; diff --git a/apps/s_cb.c b/apps/s_cb.c index 9a35d46adc..b4992aa623 100644 --- a/apps/s_cb.c +++ b/apps/s_cb.c @@ -573,5 +573,5 @@ void MS_CALLBACK msg_cb(int write_p, int version, int content_type, const void * BIO_printf(bio, " ..."); BIO_printf(bio, "\n"); } - BIO_flush(bio); + (void)BIO_flush(bio); } diff --git a/apps/s_client.c b/apps/s_client.c index 3f302c5f14..6df534fa7a 100644 --- a/apps/s_client.c +++ b/apps/s_client.c @@ -668,7 +668,7 @@ re_start: goto end; } - BIO_ctrl_set_connected(sbio, 1, &peer); + (void)BIO_ctrl_set_connected(sbio, 1, &peer); if ( enable_timeouts) { @@ -752,7 +752,7 @@ re_start: while (mbuf_len>3 && mbuf[3]=='-'); /* STARTTLS command requires EHLO... */ BIO_printf(fbio,"EHLO openssl.client.net\r\n"); - BIO_flush(fbio); + (void)BIO_flush(fbio); /* wait for multi-line response to end EHLO SMTP response */ do { @@ -761,7 +761,7 @@ re_start: foundit=1; } while (mbuf_len>3 && mbuf[3]=='-'); - BIO_flush(fbio); + (void)BIO_flush(fbio); BIO_pop(fbio); BIO_free(fbio); if (!foundit) @@ -785,7 +785,7 @@ re_start: BIO_gets(fbio,mbuf,BUFSIZZ); /* STARTTLS command requires CAPABILITY... */ BIO_printf(fbio,". CAPABILITY\r\n"); - BIO_flush(fbio); + (void)BIO_flush(fbio); /* wait for multi-line CAPABILITY response */ do { @@ -794,7 +794,7 @@ re_start: foundit=1; } while (mbuf_len>3 && mbuf[0]!='.'); - BIO_flush(fbio); + (void)BIO_flush(fbio); BIO_pop(fbio); BIO_free(fbio); if (!foundit) @@ -814,7 +814,7 @@ re_start: mbuf_len = BIO_gets(fbio,mbuf,BUFSIZZ); } while (mbuf_len>3 && mbuf[3]=='-'); - BIO_flush(fbio); + (void)BIO_flush(fbio); BIO_pop(fbio); BIO_free(fbio); BIO_printf(sbio,"AUTH TLS\r\n"); @@ -1303,6 +1303,6 @@ static void print_stuff(BIO *bio, SSL *s, int full) if (peer != NULL) X509_free(peer); /* flush, or debugging output gets mixed with http response */ - BIO_flush(bio); + (void)BIO_flush(bio); } diff --git a/crypto/bn/bntest.c b/crypto/bn/bntest.c index c885300a66..310763eca0 100644 --- a/crypto/bn/bntest.c +++ b/crypto/bn/bntest.c @@ -184,120 +184,120 @@ int main(int argc, char *argv[]) message(out,"BN_add"); if (!test_add(out)) goto err; - BIO_flush(out); + (void)BIO_flush(out); message(out,"BN_sub"); if (!test_sub(out)) goto err; - BIO_flush(out); + (void)BIO_flush(out); message(out,"BN_lshift1"); if (!test_lshift1(out)) goto err; - BIO_flush(out); + (void)BIO_flush(out); message(out,"BN_lshift (fixed)"); if (!test_lshift(out,ctx,BN_bin2bn(lst,sizeof(lst)-1,NULL))) goto err; - BIO_flush(out); + (void)BIO_flush(out); message(out,"BN_lshift"); if (!test_lshift(out,ctx,NULL)) goto err; - BIO_flush(out); + (void)BIO_flush(out); message(out,"BN_rshift1"); if (!test_rshift1(out)) goto err; - BIO_flush(out); + (void)BIO_flush(out); message(out,"BN_rshift"); if (!test_rshift(out,ctx)) goto err; - BIO_flush(out); + (void)BIO_flush(out); message(out,"BN_sqr"); if (!test_sqr(out,ctx)) goto err; - BIO_flush(out); + (void)BIO_flush(out); message(out,"BN_mul"); if (!test_mul(out)) goto err; - BIO_flush(out); + (void)BIO_flush(out); message(out,"BN_div"); if (!test_div(out,ctx)) goto err; - BIO_flush(out); + (void)BIO_flush(out); message(out,"BN_div_word"); if (!test_div_word(out)) goto err; - BIO_flush(out); + (void)BIO_flush(out); message(out,"BN_div_recp"); if (!test_div_recp(out,ctx)) goto err; - BIO_flush(out); + (void)BIO_flush(out); message(out,"BN_mod"); if (!test_mod(out,ctx)) goto err; - BIO_flush(out); + (void)BIO_flush(out); message(out,"BN_mod_mul"); if (!test_mod_mul(out,ctx)) goto err; - BIO_flush(out); + (void)BIO_flush(out); message(out,"BN_mont"); if (!test_mont(out,ctx)) goto err; - BIO_flush(out); + (void)BIO_flush(out); message(out,"BN_mod_exp"); if (!test_mod_exp(out,ctx)) goto err; - BIO_flush(out); + (void)BIO_flush(out); message(out,"BN_mod_exp_mont_consttime"); if (!test_mod_exp_mont_consttime(out,ctx)) goto err; - BIO_flush(out); + (void)BIO_flush(out); message(out,"BN_exp"); if (!test_exp(out,ctx)) goto err; - BIO_flush(out); + (void)BIO_flush(out); message(out,"BN_kronecker"); if (!test_kron(out,ctx)) goto err; - BIO_flush(out); + (void)BIO_flush(out); message(out,"BN_mod_sqrt"); if (!test_sqrt(out,ctx)) goto err; - BIO_flush(out); + (void)BIO_flush(out); message(out,"BN_GF2m_add"); if (!test_gf2m_add(out)) goto err; - BIO_flush(out); + (void)BIO_flush(out); message(out,"BN_GF2m_mod"); if (!test_gf2m_mod(out)) goto err; - BIO_flush(out); + (void)BIO_flush(out); message(out,"BN_GF2m_mod_mul"); if (!test_gf2m_mod_mul(out,ctx)) goto err; - BIO_flush(out); + (void)BIO_flush(out); message(out,"BN_GF2m_mod_sqr"); if (!test_gf2m_mod_sqr(out,ctx)) goto err; - BIO_flush(out); + (void)BIO_flush(out); message(out,"BN_GF2m_mod_inv"); if (!test_gf2m_mod_inv(out,ctx)) goto err; - BIO_flush(out); + (void)BIO_flush(out); message(out,"BN_GF2m_mod_div"); if (!test_gf2m_mod_div(out,ctx)) goto err; - BIO_flush(out); + (void)BIO_flush(out); message(out,"BN_GF2m_mod_exp"); if (!test_gf2m_mod_exp(out,ctx)) goto err; - BIO_flush(out); + (void)BIO_flush(out); message(out,"BN_GF2m_mod_sqrt"); if (!test_gf2m_mod_sqrt(out,ctx)) goto err; - BIO_flush(out); + (void)BIO_flush(out); message(out,"BN_GF2m_mod_solve_quad"); if (!test_gf2m_mod_solve_quad(out,ctx)) goto err; - BIO_flush(out); + (void)BIO_flush(out); BN_CTX_free(ctx); BIO_free(out); @@ -307,7 +307,7 @@ int main(int argc, char *argv[]) err: BIO_puts(out,"1\n"); /* make sure the Perl script fed by bc notices * the failure, see test_bn in test/Makefile.ssl*/ - BIO_flush(out); + (void)BIO_flush(out); ERR_load_crypto_strings(); ERR_print_errors_fp(stderr); EXIT(1); diff --git a/crypto/ecdh/ecdhtest.c b/crypto/ecdh/ecdhtest.c index 01baa5f494..1575006b51 100644 --- a/crypto/ecdh/ecdhtest.c +++ b/crypto/ecdh/ecdhtest.c @@ -148,7 +148,7 @@ static int test_ecdh_curve(int nid, const char *text, BN_CTX *ctx, BIO *out) #ifdef NOISY BIO_puts(out,"\n"); #else - BIO_flush(out); + (void)BIO_flush(out); #endif if (!EC_KEY_generate_key(a)) goto err; @@ -173,7 +173,7 @@ static int test_ecdh_curve(int nid, const char *text, BN_CTX *ctx, BIO *out) BIO_puts(out,"\n"); #else BIO_printf(out," ."); - BIO_flush(out); + (void)BIO_flush(out); #endif if (!EC_KEY_generate_key(b)) goto err; @@ -199,7 +199,7 @@ static int test_ecdh_curve(int nid, const char *text, BN_CTX *ctx, BIO *out) BIO_puts(out,"\n"); #else BIO_printf(out,"."); - BIO_flush(out); + (void)BIO_flush(out); #endif alen=KDF1_SHA1_len; @@ -216,7 +216,7 @@ static int test_ecdh_curve(int nid, const char *text, BN_CTX *ctx, BIO *out) BIO_puts(out,"\n"); #else BIO_printf(out,"."); - BIO_flush(out); + (void)BIO_flush(out); #endif blen=KDF1_SHA1_len; @@ -233,7 +233,7 @@ static int test_ecdh_curve(int nid, const char *text, BN_CTX *ctx, BIO *out) BIO_puts(out,"\n"); #else BIO_printf(out,"."); - BIO_flush(out); + (void)BIO_flush(out); #endif if ((aout < 4) || (bout != aout) || (memcmp(abuf,bbuf,aout) != 0)) diff --git a/crypto/ecdsa/ecdsatest.c b/crypto/ecdsa/ecdsatest.c index 59be39bb41..b07e31252b 100644 --- a/crypto/ecdsa/ecdsatest.c +++ b/crypto/ecdsa/ecdsatest.c @@ -203,13 +203,13 @@ int x9_62_test_internal(BIO *out, int nid, const char *r_in, const char *s_in) if (!EC_KEY_generate_key(key)) goto x962_int_err; BIO_printf(out, "."); - BIO_flush(out); + (void)BIO_flush(out); /* create the signature */ signature = ECDSA_do_sign(digest, 20, key); if (signature == NULL) goto x962_int_err; BIO_printf(out, "."); - BIO_flush(out); + (void)BIO_flush(out); /* compare the created signature with the expected signature */ if ((r = BN_new()) == NULL || (s = BN_new()) == NULL) goto x962_int_err; @@ -219,12 +219,12 @@ int x9_62_test_internal(BIO *out, int nid, const char *r_in, const char *s_in) if (BN_cmp(signature->r ,r) || BN_cmp(signature->s, s)) goto x962_int_err; BIO_printf(out, "."); - BIO_flush(out); + (void)BIO_flush(out); /* verify the signature */ if (ECDSA_do_verify(digest, 20, signature, key) != 1) goto x962_int_err; BIO_printf(out, "."); - BIO_flush(out); + (void)BIO_flush(out); BIO_printf(out, " ok\n"); ret = 1; @@ -369,7 +369,7 @@ int test_builtin(BIO *out) } BIO_printf(out, "."); - BIO_flush(out); + (void)BIO_flush(out); /* check key */ if (!EC_KEY_check_key(eckey)) { @@ -377,7 +377,7 @@ int test_builtin(BIO *out) goto builtin_err; } BIO_printf(out, "."); - BIO_flush(out); + (void)BIO_flush(out); /* create signature */ sig_len = ECDSA_size(eckey); if ((signature = OPENSSL_malloc(sig_len)) == NULL) @@ -388,7 +388,7 @@ int test_builtin(BIO *out) goto builtin_err; } BIO_printf(out, "."); - BIO_flush(out); + (void)BIO_flush(out); /* verify signature */ if (ECDSA_verify(0, digest, 20, signature, sig_len, eckey) != 1) { @@ -396,7 +396,7 @@ int test_builtin(BIO *out) goto builtin_err; } BIO_printf(out, "."); - BIO_flush(out); + (void)BIO_flush(out); /* verify signature with the wrong key */ if (ECDSA_verify(0, digest, 20, signature, sig_len, wrong_eckey) == 1) @@ -405,7 +405,7 @@ int test_builtin(BIO *out) goto builtin_err; } BIO_printf(out, "."); - BIO_flush(out); + (void)BIO_flush(out); /* wrong digest */ if (ECDSA_verify(0, wrong_digest, 20, signature, sig_len, eckey) == 1) @@ -414,7 +414,7 @@ int test_builtin(BIO *out) goto builtin_err; } BIO_printf(out, "."); - BIO_flush(out); + (void)BIO_flush(out); /* modify a single byte of the signature */ offset = signature[10] % sig_len; dirt = signature[11]; @@ -425,7 +425,7 @@ int test_builtin(BIO *out) goto builtin_err; } BIO_printf(out, "."); - BIO_flush(out); + (void)BIO_flush(out); BIO_printf(out, " ok\n"); /* cleanup */ diff --git a/crypto/pkcs7/pk7_mime.c b/crypto/pkcs7/pk7_mime.c index 134746c186..25566a4c21 100644 --- a/crypto/pkcs7/pk7_mime.c +++ b/crypto/pkcs7/pk7_mime.c @@ -121,7 +121,7 @@ static int B64_write_PKCS7(BIO *bio, PKCS7 *p7) } bio = BIO_push(b64, bio); i2d_PKCS7_bio(bio, p7); - BIO_flush(bio); + (void)BIO_flush(bio); bio = BIO_pop(bio); BIO_free(b64); return 1; @@ -138,7 +138,7 @@ static PKCS7 *B64_read_PKCS7(BIO *bio) bio = BIO_push(b64, bio); if(!(p7 = d2i_PKCS7_bio(bio, NULL))) PKCS7err(PKCS7_F_B64_READ_PKCS7,PKCS7_R_DECODE_ERROR); - BIO_flush(bio); + (void)BIO_flush(bio); bio = BIO_pop(bio); BIO_free(b64); return p7; diff --git a/crypto/pkcs7/pk7_smime.c b/crypto/pkcs7/pk7_smime.c index fab85137b7..5c6b0fe24b 100644 --- a/crypto/pkcs7/pk7_smime.c +++ b/crypto/pkcs7/pk7_smime.c @@ -426,7 +426,7 @@ PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, SMIME_crlf_copy(in, p7bio, flags); - BIO_flush(p7bio); + (void)BIO_flush(p7bio); if (!PKCS7_dataFinal(p7,p7bio)) { PKCS7err(PKCS7_F_PKCS7_ENCRYPT,PKCS7_R_PKCS7_DATAFINAL_ERROR); diff --git a/fips-1.0/dsa/fips_dsa_lib.c b/fips-1.0/dsa/fips_dsa_lib.c index 4905aee059..12f0badb99 100644 --- a/fips-1.0/dsa/fips_dsa_lib.c +++ b/fips-1.0/dsa/fips_dsa_lib.c @@ -59,7 +59,7 @@ #include #include -/* Minimal FIPS versions of FIPS_rsa_new() and FIPS_rsa_free: to +/* Minimal FIPS versions of FIPS_dsa_new() and FIPS_dsa_free: to * reduce external dependencies. */ @@ -71,7 +71,7 @@ DSA *FIPS_dsa_new(void) return NULL; memset(ret, 0, sizeof(DSA)); ret->meth = DSA_OpenSSL(); - if (ret->meth->finish) + if (ret->meth->init) ret->meth->init(ret); return ret; } diff --git a/fips-1.0/dsa/fips_dssvs.c b/fips-1.0/dsa/fips_dssvs.c index 042edc001c..2a0da15f64 100644 --- a/fips-1.0/dsa/fips_dssvs.c +++ b/fips-1.0/dsa/fips_dssvs.c @@ -94,7 +94,8 @@ void pqg() unsigned long h; dsa = FIPS_dsa_new(); - DSA_generate_parameters_ex(dsa, nmod,seed,0,&counter,&h,NULL); + if (!DSA_generate_parameters_ex(dsa, nmod,seed,0,&counter,&h,NULL)) + do_print_errors(); pbn("P",dsa->p); pbn("Q",dsa->q); pbn("G",dsa->g); @@ -132,7 +133,8 @@ void keypair() printf("[mod = %d]\n\n",nmod); dsa = FIPS_dsa_new(); - DSA_generate_parameters_ex(dsa, nmod,NULL,0,NULL,NULL,NULL); + if (!DSA_generate_parameters_ex(dsa, nmod,NULL,0,NULL,NULL,NULL)) + do_print_errors(); pbn("P",dsa->p); pbn("Q",dsa->q); pbn("G",dsa->g); @@ -140,7 +142,9 @@ void keypair() while(n--) { - DSA_generate_key(dsa); + if (!DSA_generate_key(dsa)) + do_print_errors(); + pbn("X",dsa->priv_key); pbn("Y",dsa->pub_key); @@ -169,9 +173,11 @@ void siggen() { nmod=atoi(value); printf("[mod = %d]\n\n",nmod); - + if (dsa) + FIPS_dsa_free(dsa); dsa = FIPS_dsa_new(); - DSA_generate_parameters_ex(dsa, nmod,NULL,0,NULL,NULL,NULL); + if (!DSA_generate_parameters_ex(dsa, nmod,NULL,0,NULL,NULL,NULL)) + do_print_errors(); pbn("P",dsa->p); pbn("Q",dsa->q); pbn("G",dsa->g); @@ -191,7 +197,8 @@ void siggen() n=hex2bin(value,msg); pv("Msg",msg,n); - DSA_generate_key(dsa); + if (!DSA_generate_key(dsa)) + do_print_errors(); pk.type = EVP_PKEY_DSA; pk.pkey.dsa = dsa; pbn("Y",dsa->pub_key); @@ -206,10 +213,12 @@ void siggen() pbn("R",sig->r); pbn("S",sig->s); putc('\n',stdout); + DSA_SIG_free(sig); EVP_MD_CTX_cleanup(&mctx); - FIPS_dsa_free(dsa); } } + if (dsa) + FIPS_dsa_free(dsa); } void sigver() diff --git a/fips-1.0/rsa/fips_rsa_lib.c b/fips-1.0/rsa/fips_rsa_lib.c index 4814c3160d..c135539f8b 100644 --- a/fips-1.0/rsa/fips_rsa_lib.c +++ b/fips-1.0/rsa/fips_rsa_lib.c @@ -80,6 +80,8 @@ RSA *FIPS_rsa_new(void) void FIPS_rsa_free(RSA *r) { + if (!r) + return; if (r->meth->finish) r->meth->finish(r); if (r->n != NULL) BN_clear_free(r->n); diff --git a/ssl/d1_both.c b/ssl/d1_both.c index b746a50dd7..7e6d300377 100644 --- a/ssl/d1_both.c +++ b/ssl/d1_both.c @@ -1142,7 +1142,7 @@ dtls1_retransmit_message(SSL *s, unsigned short seq, unsigned long frag_off, SSL3_RT_CHANGE_CIPHER_SPEC : SSL3_RT_HANDSHAKE); s->d1->retransmitting = 0; - BIO_flush(SSL_get_wbio(s)); + (void)BIO_flush(SSL_get_wbio(s)); return ret; }