Fix some return values
diff --git a/library/pk_wrap.c b/library/pk_wrap.c
index c2a4c7f..249f7bd 100644
--- a/library/pk_wrap.c
+++ b/library/pk_wrap.c
@@ -141,8 +141,8 @@
 
     ecdsa_init( &ecdsa );
 
-    ret = ecdsa_from_keypair( &ecdsa, ctx ) ||
-          ecdsa_verify_wrap( &ecdsa, md_alg, hash, hash_len, sig, sig_len );
+    if( ( ret = ecdsa_from_keypair( &ecdsa, ctx ) ) == 0 )
+        ret = ecdsa_verify_wrap( &ecdsa, md_alg, hash, hash_len, sig, sig_len );
 
     ecdsa_free( &ecdsa );
 
diff --git a/library/ssl_cli.c b/library/ssl_cli.c
index dbc804a..274cb3a 100644
--- a/library/ssl_cli.c
+++ b/library/ssl_cli.c
@@ -2066,10 +2066,12 @@
 
         ecdsa_init( &ecdsa );
 
-        ret = ecdsa_from_keypair( &ecdsa, ssl->pk_key->pk_ctx ) ||
-              ecdsa_write_signature( &ecdsa, hash, hashlen,
-                      ssl->out_msg + 6 + offset, &n,
-                      ssl->f_rng, ssl->p_rng );
+        if( ( ret = ecdsa_from_keypair( &ecdsa, ssl->pk_key->pk_ctx ) ) == 0 )
+        {
+            ret = ecdsa_write_signature( &ecdsa, hash, hashlen,
+                                         ssl->out_msg + 6 + offset, &n,
+                                         ssl->f_rng, ssl->p_rng );
+        }
 
         ecdsa_free( &ecdsa );
 
diff --git a/library/ssl_srv.c b/library/ssl_srv.c
index f8e1748..e3f604f 100644
--- a/library/ssl_srv.c
+++ b/library/ssl_srv.c
@@ -2106,10 +2106,13 @@
 
             ecdsa_init( &ecdsa );
 
-            ret = ecdsa_from_keypair( &ecdsa, ssl->pk_key->pk_ctx ) ||
-                  ecdsa_write_signature( &ecdsa, hash, hashlen,
-                                         p + 2, &signature_len,
-                                         ssl->f_rng, ssl->p_rng );
+            ret = ecdsa_from_keypair( &ecdsa, ssl->pk_key->pk_ctx );
+            if( ret == 0 )
+            {
+                ret = ecdsa_write_signature( &ecdsa, hash, hashlen,
+                                             p + 2, &signature_len,
+                                             ssl->f_rng, ssl->p_rng );
+            }
 
             ecdsa_free( &ecdsa );
 
diff --git a/library/x509parse.c b/library/x509parse.c
index a762855..9f90b5a 100644
--- a/library/x509parse.c
+++ b/library/x509parse.c
@@ -605,8 +605,9 @@
 #if defined(POLARSSL_ECP_C)
     if( pk_alg == POLARSSL_PK_ECKEY_DH || pk_alg == POLARSSL_PK_ECKEY )
     {
-        ret = x509_use_ecparams( &alg_params, &pk_ec( *pk )->grp ) ||
-              x509_get_ecpubkey( p, end, pk_ec( *pk ) );
+        ret = x509_use_ecparams( &alg_params, &pk_ec( *pk )->grp );
+        if( ret == 0 )
+            ret = x509_get_ecpubkey( p, end, pk_ec( *pk ) );
     } else
 #endif /* POLARSSL_ECP_C */
         ret = POLARSSL_ERR_X509_UNKNOWN_PK_ALG;