Index: wp-includes/functions.php
===================================================================
--- wp-includes/functions.php	(revision 23178)
+++ wp-includes/functions.php	(working copy)
@@ -1766,22 +1766,26 @@
  * @since 2.0.4
  *
  * @param string $filename File name or path.
- * @param array $mimes Optional. Key is the file extension with value as the mime type.
+ * @param array $mimes Optional. Key is the file extension with value as the mime type or array of mime types.
  * @return array Values with extension first and mime type.
  */
 function wp_check_filetype( $filename, $mimes = null ) {
 	if ( empty($mimes) )
 		$mimes = get_allowed_mime_types();
-	$type = false;
-	$ext = false;
+	$type = $ext = $break = false;
 
 	foreach ( $mimes as $ext_preg => $mime_match ) {
-		$ext_preg = '!\.(' . $ext_preg . ')$!i';
-		if ( preg_match( $ext_preg, $filename, $ext_matches ) ) {
-			$type = $mime_match;
-			$ext = $ext_matches[1];
+		$ext_preg = '!\.(' . str_replace( '.', '\.', $ext_preg ) . ')$!i';
+		foreach ( (array) $mime_match as $mime_type ) {
+			if ( preg_match( $ext_preg, $filename, $ext_matches ) ) {
+				$type = $mime_type;
+				$ext = $ext_matches[1];
+				$break = true;
+				break;
+			}
+		}
+		if ($break)
 			break;
-		}
 	}
 
 	return compact( 'ext', 'type' );
@@ -1863,7 +1867,7 @@
  * @uses apply_filters() Calls 'mime_types' on returned array. This filter should
  * be used to add types, not remove them. To remove types use the upload_mimes filter.
  *
- * @return array Array of mime types keyed by the file extension regex corresponding to those types.
+ * @return array Array of mime types keyed by the file extension regex, or an array thereof, corresponding to those types.
  */
 function wp_get_mime_types() {
 	// Accepted MIME types are set here as PCRE unless provided.
@@ -1874,7 +1878,7 @@
 	'png' => 'image/png',
 	'bmp' => 'image/bmp',
 	'tif|tiff' => 'image/tiff',
-	'ico' => 'image/x-icon',
+	'ico' => array( 'image/x-icon', 'image/vnd.microsoft.icon' ),
 	// Video formats
 	'asf|asx|wax|wmv|wmx' => 'video/asf',
 	'avi' => 'video/avi',
