diff --git a/crypto/asn1/a_object.c b/crypto/asn1/a_object.c
index 17783ba..c854fb8 100644
--- a/crypto/asn1/a_object.c
+++ b/crypto/asn1/a_object.c
@@ -204,9 +204,7 @@
   // once detached we can change it
   if ((data == NULL) || (ret->length < length)) {
     ret->length = 0;
-    if (data != NULL) {
-      OPENSSL_free(data);
-    }
+    OPENSSL_free(data);
     data = (unsigned char *)OPENSSL_malloc(length);
     if (data == NULL) {
       i = ERR_R_MALLOC_FAILURE;
diff --git a/crypto/asn1/a_utctm.c b/crypto/asn1/a_utctm.c
index 159a0ea..ac548dd 100644
--- a/crypto/asn1/a_utctm.c
+++ b/crypto/asn1/a_utctm.c
@@ -154,7 +154,7 @@
   s->type = V_ASN1_UTCTIME;
   return s;
 err:
-  if (free_s && s) {
+  if (free_s) {
     ASN1_UTCTIME_free(s);
   }
   return NULL;
diff --git a/crypto/asn1/tasn_utl.c b/crypto/asn1/tasn_utl.c
index a476874..4a97574 100644
--- a/crypto/asn1/tasn_utl.c
+++ b/crypto/asn1/tasn_utl.c
@@ -146,7 +146,7 @@
   ASN1_ENCODING *enc;
   enc = asn1_get_enc_ptr(pval, it);
   if (enc) {
-    if (enc->enc && !enc->alias_only) {
+    if (!enc->alias_only) {
       OPENSSL_free(enc->enc);
     }
     enc->enc = NULL;
diff --git a/crypto/x509/a_sign.c b/crypto/x509/a_sign.c
index 010f660..ed9e79b 100644
--- a/crypto/x509/a_sign.c
+++ b/crypto/x509/a_sign.c
@@ -107,14 +107,8 @@
     OPENSSL_PUT_ERROR(X509, ERR_R_EVP_LIB);
     goto err;
   }
-  if (signature->data != NULL) {
-    OPENSSL_free(signature->data);
-  }
-  signature->data = buf_out;
+  ASN1_STRING_set0(signature, buf_out, outl);
   buf_out = NULL;
-  signature->length = outl;
-  // In the interests of compatibility, I'll make sure that the bit string
-  // has a 'not-used bits' value of 0
   signature->flags &= ~(ASN1_STRING_FLAG_BITS_LEFT | 0x07);
   signature->flags |= ASN1_STRING_FLAG_BITS_LEFT;
 err:
diff --git a/crypto/x509/asn1_gen.c b/crypto/x509/asn1_gen.c
index 3890c46..eb31970 100644
--- a/crypto/x509/asn1_gen.c
+++ b/crypto/x509/asn1_gen.c
@@ -273,13 +273,8 @@
   ret = d2i_ASN1_TYPE(NULL, &cp, len);
 
 err:
-  if (orig_der) {
-    OPENSSL_free(orig_der);
-  }
-  if (new_der) {
-    OPENSSL_free(new_der);
-  }
-
+  OPENSSL_free(orig_der);
+  OPENSSL_free(new_der);
   return ret;
 }
 
@@ -513,18 +508,9 @@
   der = NULL;
 
 bad:
-
-  if (der) {
-    OPENSSL_free(der);
-  }
-
-  if (sk) {
-    sk_ASN1_TYPE_pop_free(sk, ASN1_TYPE_free);
-  }
-  if (sect) {
-    X509V3_section_free(cnf, sect);
-  }
-
+  OPENSSL_free(der);
+  sk_ASN1_TYPE_pop_free(sk, ASN1_TYPE_free);
+  X509V3_section_free(cnf, sect);
   return ret;
 }
 
diff --git a/crypto/x509/by_dir.c b/crypto/x509/by_dir.c
index 395e82d..9e3290d 100644
--- a/crypto/x509/by_dir.c
+++ b/crypto/x509/by_dir.c
@@ -114,10 +114,9 @@
 static int dir_ctrl(X509_LOOKUP *ctx, int cmd, const char *argp, long argl,
                     char **retp) {
   int ret = 0;
-  BY_DIR *ld;
   char *dir = NULL;
 
-  ld = (BY_DIR *)ctx->method_data;
+  BY_DIR *ld = ctx->method_data;
 
   switch (cmd) {
     case X509_L_ADD_DIR:
@@ -151,7 +150,7 @@
     return 0;
   }
   a->dirs = NULL;
-  lu->method_data = (char *)a;
+  lu->method_data = a;
   return 1;
 }
 
@@ -168,26 +167,20 @@
 }
 
 static void by_dir_entry_free(BY_DIR_ENTRY *ent) {
-  if (ent->dir) {
+  if (ent != NULL) {
     OPENSSL_free(ent->dir);
-  }
-  if (ent->hashes) {
     sk_BY_DIR_HASH_pop_free(ent->hashes, by_dir_hash_free);
+    OPENSSL_free(ent);
   }
-  OPENSSL_free(ent);
 }
 
 static void free_dir(X509_LOOKUP *lu) {
-  BY_DIR *a;
-
-  a = (BY_DIR *)lu->method_data;
-  if (a->dirs != NULL) {
+  BY_DIR *a = lu->method_data;
+  if (a != NULL) {
     sk_BY_DIR_ENTRY_pop_free(a->dirs, by_dir_entry_free);
-  }
-  if (a->buffer != NULL) {
     BUF_MEM_free(a->buffer);
+    OPENSSL_free(a);
   }
-  OPENSSL_free(a);
 }
 
 static int add_cert_dir(BY_DIR *ctx, const char *dir, int type) {
@@ -253,7 +246,6 @@
 
 static int get_cert_by_subject(X509_LOOKUP *xl, int type, X509_NAME *name,
                                X509_OBJECT *ret) {
-  BY_DIR *ctx;
   union {
     struct {
       X509 st_x509;
@@ -299,7 +291,7 @@
     goto finish;
   }
 
-  ctx = (BY_DIR *)xl->method_data;
+  BY_DIR *ctx = xl->method_data;
 
   hash_array[0] = X509_NAME_hash(name);
   hash_array[1] = X509_NAME_hash_old(name);
@@ -440,9 +432,7 @@
     }
   }
 finish:
-  if (b != NULL) {
-    BUF_MEM_free(b);
-  }
+  BUF_MEM_free(b);
   return ok;
 }
 
diff --git a/crypto/x509/by_file.c b/crypto/x509/by_file.c
index 65c2b8b..3435fc2 100644
--- a/crypto/x509/by_file.c
+++ b/crypto/x509/by_file.c
@@ -171,12 +171,8 @@
   }
 
 err:
-  if (x != NULL) {
-    X509_free(x);
-  }
-  if (in != NULL) {
-    BIO_free(in);
-  }
+  X509_free(x);
+  BIO_free(in);
   return ret;
 }
 
@@ -236,12 +232,8 @@
   }
 
 err:
-  if (x != NULL) {
-    X509_CRL_free(x);
-  }
-  if (in != NULL) {
-    BIO_free(in);
-  }
+  X509_CRL_free(x);
+  BIO_free(in);
   return ret;
 }
 
diff --git a/crypto/x509/internal.h b/crypto/x509/internal.h
index 6ac8a3f..8785949 100644
--- a/crypto/x509/internal.h
+++ b/crypto/x509/internal.h
@@ -310,7 +310,7 @@
   int init;                    // have we been started
   int skip;                    // don't use us.
   X509_LOOKUP_METHOD *method;  // the functions
-  char *method_data;           // method data
+  void *method_data;           // method data
 
   X509_STORE *store_ctx;  // who owns us
 } /* X509_LOOKUP */;
diff --git a/crypto/x509v3/pcy_tree.c b/crypto/x509v3/pcy_tree.c
index 10dad05..673c615 100644
--- a/crypto/x509v3/pcy_tree.c
+++ b/crypto/x509v3/pcy_tree.c
@@ -688,9 +688,6 @@
 }
 
 void X509_policy_tree_free(X509_POLICY_TREE *tree) {
-  X509_POLICY_LEVEL *curr;
-  int i;
-
   if (!tree) {
     return;
   }
@@ -698,22 +695,14 @@
   sk_X509_POLICY_NODE_free(tree->auth_policies);
   sk_X509_POLICY_NODE_pop_free(tree->user_policies, exnode_free);
 
-  for (i = 0, curr = tree->levels; i < tree->nlevel; i++, curr++) {
-    if (curr->cert) {
-      X509_free(curr->cert);
-    }
-    if (curr->nodes) {
-      sk_X509_POLICY_NODE_pop_free(curr->nodes, policy_node_free);
-    }
-    if (curr->anyPolicy) {
-      policy_node_free(curr->anyPolicy);
-    }
+  for (int i = 0; i < tree->nlevel; i++) {
+    X509_POLICY_LEVEL *curr = &tree->levels[i];
+    X509_free(curr->cert);
+    sk_X509_POLICY_NODE_pop_free(curr->nodes, policy_node_free);
+    policy_node_free(curr->anyPolicy);
   }
 
-  if (tree->extra_data) {
-    sk_X509_POLICY_DATA_pop_free(tree->extra_data, policy_data_free);
-  }
-
+  sk_X509_POLICY_DATA_pop_free(tree->extra_data, policy_data_free);
   OPENSSL_free(tree->levels);
   OPENSSL_free(tree);
 }
diff --git a/crypto/x509v3/v3_conf.c b/crypto/x509v3/v3_conf.c
index 7140edd..64bed7a 100644
--- a/crypto/x509v3/v3_conf.c
+++ b/crypto/x509v3/v3_conf.c
@@ -310,9 +310,7 @@
 err:
   ASN1_OBJECT_free(obj);
   ASN1_OCTET_STRING_free(oct);
-  if (ext_der) {
-    OPENSSL_free(ext_der);
-  }
+  OPENSSL_free(ext_der);
   return extension;
 }
 
diff --git a/crypto/x509v3/v3_crld.c b/crypto/x509v3/v3_crld.c
index f1cab70..68ab343 100644
--- a/crypto/x509v3/v3_crld.c
+++ b/crypto/x509v3/v3_crld.c
@@ -190,12 +190,8 @@
   return 1;
 
 err:
-  if (fnm) {
-    sk_GENERAL_NAME_pop_free(fnm, GENERAL_NAME_free);
-  }
-  if (rnm) {
-    sk_X509_NAME_ENTRY_pop_free(rnm, X509_NAME_ENTRY_free);
-  }
+  sk_GENERAL_NAME_pop_free(fnm, GENERAL_NAME_free);
+  sk_X509_NAME_ENTRY_pop_free(rnm, X509_NAME_ENTRY_free);
   return -1;
 }
 
@@ -308,9 +304,7 @@
   return point;
 
 err:
-  if (point) {
-    DIST_POINT_free(point);
-  }
+  DIST_POINT_free(point);
   return NULL;
 }
 
@@ -389,9 +383,7 @@
       break;
 
     case ASN1_OP_FREE_POST:
-      if (dpn->dpname) {
-        X509_NAME_free(dpn->dpname);
-      }
+      X509_NAME_free(dpn->dpname);
       break;
   }
   return 1;
diff --git a/crypto/x509v3/v3_ncons.c b/crypto/x509v3/v3_ncons.c
index 55f4eed..967423a 100644
--- a/crypto/x509v3/v3_ncons.c
+++ b/crypto/x509v3/v3_ncons.c
@@ -161,13 +161,8 @@
 memerr:
   OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
 err:
-  if (ncons) {
-    NAME_CONSTRAINTS_free(ncons);
-  }
-  if (sub) {
-    GENERAL_SUBTREE_free(sub);
-  }
-
+  NAME_CONSTRAINTS_free(ncons);
+  GENERAL_SUBTREE_free(sub);
   return NULL;
 }
 
diff --git a/crypto/x509v3/v3_utl.c b/crypto/x509v3/v3_utl.c
index 16e0e07..3eccf06 100644
--- a/crypto/x509v3/v3_utl.c
+++ b/crypto/x509v3/v3_utl.c
@@ -158,15 +158,9 @@
   if (!conf) {
     return;
   }
-  if (conf->name) {
-    OPENSSL_free(conf->name);
-  }
-  if (conf->value) {
-    OPENSSL_free(conf->value);
-  }
-  if (conf->section) {
-    OPENSSL_free(conf->section);
-  }
+  OPENSSL_free(conf->name);
+  OPENSSL_free(conf->value);
+  OPENSSL_free(conf->section);
   OPENSSL_free(conf);
 }
 
@@ -551,9 +545,7 @@
   return hexbuf;
 
 err:
-  if (hexbuf) {
-    OPENSSL_free(hexbuf);
-  }
+  OPENSSL_free(hexbuf);
   OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
   return NULL;
 
