diff -ruN /home/dan/moodle/moodle/lib/filelib.php moodle/lib/filelib.php --- /home/dan/moodle/moodle/lib/filelib.php 2007-12-29 20:36:51.000000000 +0000 +++ moodle/lib/filelib.php 2007-12-30 01:16:01.000000000 +0000 @@ -214,6 +214,11 @@ function mimeinfo($element, $filename) { static $mimeinfo; $mimeinfo=get_mimetypes_array(); + + if( preg_match('@^https?://[^/]+/?$@', $filename) ){ + // prevent things like http://website.au returning audio/au + return $mimeinfo['xxx'][$element]; // By default + } if (eregi('\.([a-z0-9]+)$', $filename, $match)) { if (isset($mimeinfo[strtolower($match[1])][$element])) { diff -ruN /home/dan/moodle/moodle/lib/simpletest/testfilelib.php moodle/lib/simpletest/testfilelib.php --- /home/dan/moodle/moodle/lib/simpletest/testfilelib.php 1970-01-01 01:00:00.000000000 +0100 +++ moodle/lib/simpletest/testfilelib.php 2007-12-30 01:18:54.000000000 +0000 @@ -0,0 +1,34 @@ +assertNotEqual('audio/au', mimeinfo('type', 'http://test.au/') ); + $this->assertNotEqual('audio/au', mimeinfo('type', 'http://test.au') ); + $this->assertNotEqual('audio/au', mimeinfo('type', 'http://www.test.au/') ); + $this->assertNotEqual('audio/au', mimeinfo('type', 'http://a.au/') ); + $this->assertEqual('audio/au', mimeinfo('type', 'http://test.au/x.au') ); + $this->assertEqual('audio/au', mimeinfo('type', 'http://test.au/a/very/long/sub/directory/and.au') ); + $this->assertEqual('audio/au', mimeinfo('type', 'file://test.au') ); + $this->assertEqual('audio/au', mimeinfo('type', '../test.au') ); + $this->assertEqual('audio/au', mimeinfo('type', 'test.au') ); + + } +} +?>