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:30:28 -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->mimetype) { + $errors[] = t('The uploaded 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)); } }