← Back to team overview

mahara-contributors team mailing list archive

[Bug 1249858] Re: Mahara can't figure out mime types because of a finfo() bug

 

Robert has pointed out on IRC that there's a workaround listed on the
PHP bug report, that involves including your own copies of the Magic DB,
and checking which PHP version is running:
https://bugs.php.net/bug.php?id=61940#1336148541

So, I propose this course of action:

1. We implement the workaround of including Magic DB's in the Mahara distribution itself
2. We port Moodle's Mime Type array as a fallback
3. We drop the deprecated call to mime_content_type()
4. If neither finfo nor the giant Moodle Mimetype list is able to identify the file's mimetype, we set it to the default 'application/octet-stream', and don't look at or trust the browser-supplied mimetype at all.

** Also affects: mahara/1.6
   Importance: Undecided
       Status: New

** Also affects: mahara/1.7
   Importance: Undecided
       Status: New

** Also affects: mahara/1.9
   Importance: Medium
     Assignee: Robert Lyon (robertl-9)
       Status: Confirmed

** Changed in: mahara/1.7
    Milestone: None => 1.7.5

** Changed in: mahara/1.6
    Milestone: None => 1.6.9

** Also affects: mahara/1.8
   Importance: Undecided
       Status: New

** Changed in: mahara/1.8
    Milestone: None => 1.8.1

** Changed in: mahara/1.9
    Milestone: 1.8.1 => 1.9.0

-- 
You received this bug notification because you are a member of Mahara
Contributors, which is subscribed to Mahara.
Matching subscriptions: Subscription for all Mahara Contributors -- please ask on #mahara-dev or mahara.org forum before editing or unsubscribing it!
https://bugs.launchpad.net/bugs/1249858

Title:
  Mahara can't figure out mime types because of a finfo() bug

Status in Mahara ePortfolio:
  Confirmed
Status in Mahara 1.6 series:
  New
Status in Mahara 1.7 series:
  New
Status in Mahara 1.8 series:
  New
Status in Mahara 1.9 series:
  Confirmed

Bug description:
  There have been several notable Mahara bugs based around the fact that
  our current handling of mimetypes is broken.

  See for instance:
   - https://bugs.launchpad.net/mahara/+bug/1220639
   - https://bugs.launchpad.net/mahara/+bug/1249166

  The problem is this:

  1. You can't really trust the mimetype that the browser sends to you, because different browsers send different wacky things
  2. Mahara has long used its own function file_mime_type() in lib/file.php for this purpose
  3. file_mime_type() preferentially uses finfo() to check the mimetype. But, there's a bug in finfo() with an external magic db, which is how it is distributed on Ubuntu presently: https://bugs.php.net/bug.php?id=61940
  4. file_mime_type() falls back to mime_content_type(). But that's now deprecated
  5. If neither of those works, we fall back to trusting what the browser told us, which isn't really the best (see #1)

To manage notifications about this bug go to:
https://bugs.launchpad.net/mahara/+bug/1249858/+subscriptions


References