diff --git a/src/openvpn/xkey_helper.c b/src/openvpn/xkey_helper.c
index 6908cbb..fb088a8 100644
--- a/src/openvpn/xkey_helper.c
+++ b/src/openvpn/xkey_helper.c
@@ -71,12 +71,13 @@
     }
 
     unsigned int len = (unsigned int)*buflen;
-    if (EVP_Digest(src, srclen, buf, &len, md, NULL) != 1)
+    int ret = EVP_Digest(src, srclen, buf, &len, md, NULL);
+    EVP_MD_free(md);
+    if (ret != 1)
     {
         msg(M_WARN, "WARN: xkey_digest: EVP_Digest failed");
         return 0;
     }
-    EVP_MD_free(md);
 
     *buflen = len;
     return 1;
