crypt_and_hash: check MAC earlier
diff --git a/ChangeLog b/ChangeLog
index 7f76b7f..12bbaf0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -7,6 +7,7 @@
 Bugfix
    * Fixed X.509 hostname comparison (with non-regular characters)
    * SSL now gracefully handles missing RNG
+   * crypt_and_hash app checks MAC before final decryption
 
 = Version 1.2.10 released 2013-10-07
 Changes
diff --git a/programs/aes/crypt_and_hash.c b/programs/aes/crypt_and_hash.c
index 37d9d30..0448440 100644
--- a/programs/aes/crypt_and_hash.c
+++ b/programs/aes/crypt_and_hash.c
@@ -454,17 +454,6 @@
         }
 
         /*
-         * Write the final block of data
-         */
-        cipher_finish( &cipher_ctx, output, &olen );
-
-        if( fwrite( output, 1, olen, fout ) != olen )
-        {
-            fprintf( stderr, "fwrite(%ld bytes) failed\n", (long) olen );
-            goto exit;
-        }
-
-        /*
          * Verify the message authentication code.
          */
         md_hmac_finish( &md_ctx, digest );
@@ -486,6 +475,17 @@
                              "or file corrupted.\n" );
             goto exit;
         }
+
+        /*
+         * Write the final block of data
+         */
+        cipher_finish( &cipher_ctx, output, &olen );
+
+        if( fwrite( output, 1, olen, fout ) != olen )
+        {
+            fprintf( stderr, "fwrite(%ld bytes) failed\n", (long) olen );
+            goto exit;
+        }
     }
 
     ret = 0;