diff --git a/src/openvpn/crypto.c b/src/openvpn/crypto.c
index b9c95225..7adff4bb 100644
--- a/src/openvpn/crypto.c
+++ b/src/openvpn/crypto.c
@@ -133,7 +133,10 @@ openvpn_encrypt_aead(struct buffer *buf, struct buffer work,
     ASSERT(buf_inc_len(&work, outlen));
 
     /* Flush the encryption buffer */
-    ASSERT(cipher_ctx_final(ctx->cipher, BEND(&work), &outlen));
+    //ASSERT(cipher_ctx_final(ctx->cipher, BEND(&work), &outlen));
+    if (!(cipher_ctx_final(ctx->cipher, BEND(&work), &outlen))) {
+      goto err;
+    }
     ASSERT(buf_inc_len(&work, outlen));
 
     /* Write authentication tag */
@@ -737,6 +740,7 @@ warn_insecure_key_type(const char *ciphername, const cipher_kt_t *cipher)
 /*
  * Build a struct key_type.
  */
+extern int fuzz_success;
 void
 init_key_type(struct key_type *kt, const char *ciphername,
               const char *authname, bool tls_mode, bool warn)
@@ -752,6 +756,7 @@ init_key_type(struct key_type *kt, const char *ciphername,
         kt->cipher = cipher_kt_get(ciphername);
         if (!kt->cipher)
         {
+            fuzz_success = 0;
             msg(M_FATAL, "Cipher %s not supported", ciphername);
         }
 
@@ -766,11 +771,13 @@ init_key_type(struct key_type *kt, const char *ciphername,
 #endif
               ))
         {
+            fuzz_success = 0;
             msg(M_FATAL, "Cipher '%s' mode not supported", ciphername);
         }
 
         if (OPENVPN_MAX_CIPHER_BLOCK_SIZE < cipher_kt_block_size(kt->cipher))
         {
+            fuzz_success = 0;
             msg(M_FATAL, "Cipher '%s' not allowed: block size too big.", ciphername);
         }
         if (warn)
@@ -782,6 +789,7 @@ init_key_type(struct key_type *kt, const char *ciphername,
     {
         if (warn)
         {
+            fuzz_success = 0;
             msg(M_WARN, "******* WARNING *******: '--cipher none' was specified. "
                 "This means NO encryption will be performed and tunnelled "
                 "data WILL be transmitted in clear text over the network! "
@@ -797,6 +805,7 @@ init_key_type(struct key_type *kt, const char *ciphername,
 
             if (OPENVPN_MAX_HMAC_SIZE < kt->hmac_length)
             {
+                fuzz_success = 0;
                 msg(M_FATAL, "HMAC '%s' not allowed: digest size too big.", authname);
             }
         }
@@ -805,6 +814,7 @@ init_key_type(struct key_type *kt, const char *ciphername,
     {
         if (warn)
         {
+            fuzz_success = 0;
             msg(M_WARN, "******* WARNING *******: '--auth none' was specified. "
                 "This means no authentication will be performed on received "
                 "packets, meaning you CANNOT trust that the data received by "
@@ -812,6 +822,7 @@ init_key_type(struct key_type *kt, const char *ciphername,
                 "PLEASE DO RECONSIDER THIS SETTING!");
         }
     }
+            fuzz_success = 1;
 }
 
 /* given a key and key_type, build a key_ctx */
@@ -1037,6 +1048,7 @@ generate_key_random(struct key *key, const struct key_type *kt)
         if (!rand_bytes(key->cipher, cipher_len)
             || !rand_bytes(key->hmac, hmac_len))
         {
+          fuzz_success = 0;
             msg(M_FATAL, "ERROR: Random number generator cannot obtain entropy for key generation");
         }
 
@@ -1050,6 +1062,7 @@ generate_key_random(struct key *key, const struct key_type *kt)
     } while (kt && !check_key(key, kt));
 
     gc_free(&gc);
+    fuzz_success = 1;
 }
 
 /*
@@ -1390,10 +1403,14 @@ read_key_file(struct key2 *key2, const char *file, const unsigned int flags)
 
         if (state != PARSE_FINISHED)
         {
+          fuzz_success = 0;
             msg(M_FATAL, "Footer text not found in file '%s' (%d/%d/%d bytes found/min/max)",
                 print_key_filename(file, flags & RKF_INLINE), count, onekeylen,
                 keylen);
         }
+        else {
+          fuzz_success = 1;
+        }
     }
 
     /* zero file read buffer if not an inline file */
