Index: filefield.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/filefield/filefield.module,v
retrieving revision 1.176
diff -u -r1.176 filefield.module
--- filefield.module	19 Mar 2009 03:43:37 -0000	1.176
+++ filefield.module	20 Mar 2009 05:56:15 -0000
@@ -531,7 +531,18 @@
 
   if (!empty($extensions)) {
     $regex = '/\.('. ereg_replace(' +', '|', preg_quote($extensions)) .')$/i';
-    if (!preg_match($regex, $file->filename)) {
+    $matches = array();
+    if (preg_match($regex, $file->filename, $matches)) {
+      $extension = $matches[1];
+      // If the extension validates, check that the mimetype matches.
+      if (module_exists('mimedetect')) {
+        $type = mimedetect_mime($file);
+        if ($type != $file->filemime) {
+          $errors[] = t('The file contents (@type) do not match it\'s extension (@extension).', array('@type' => $type, '@extension' => $extension));
+        }
+      }
+    }
+    else {
       $errors[] = t('Only files with the following extensions are allowed: %files-allowed.', array('%files-allowed' => $extensions));
     }
   }
