php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #67647 Bundled libmagic 5.17 does not detect quicktime files correctly
Submitted: 2014-07-18 08:24 UTC Modified: 2015-01-22 11:02 UTC
From: emkael at tlen dot pl Assigned: ab (profile)
Status: Closed Package: Filesystem function related
PHP Version: 5.6.0RC2 OS: Debian 3.14.12 x86_64 GNU/Linux
Private report: No CVE-ID: None
 [2014-07-18 08:24 UTC] emkael at tlen dot pl
Description:
------------
Version 5.6.0RC2 bundles libmagic in version 5.17.

That version, contrary to (i.e.) 5.19, fails to detect certain quicktime files as video/quicktime, and serves "binary" instead.

I've attached a series of command-line tests that replicate the issue and correlate it with libmagic version, attached below.

Unfortunately, the test does not replicate the issue with a sample MOV file from Apple's KB, but works on various other MOV files.

The offending file magic rule was commented out from the file Magdir database in February (so, it's fixed in libmagic version >= 5.18): https://github.com/file/file/commit/f2750e17d784dd6b21f7649965d2bd0605bfd471#diff-45a78c19f30f8e352b631e9f1d9931d2R1876

PS I'm not sure which packages does this issue belong to, apologies for that.

Test script:
---------------
user@machine:~$ hexdump -C test.mov | head -n 1
00000000  00 00 00 20 66 74 79 70  71 74 20 20 20 05 03 00  |... ftypqt   ...|

user@machine:~$ file -v
file-5.19
magic file from /etc/magic:/usr/share/misc/magic

user@machine:~$ file -b --mime-type test.mov
video/quicktime

user@machine:~$ php -i | grep libmagic
libmagic => 517

user@machine:~$ php -r '$fi = new finfo(FILEINFO_MIME_TYPE); print($fi->file("test.mov")."\n");'
binary

user@machine:~$ php -r '$fi = new finfo(); print($fi->file("test.mov")."\n");'
floppy with old FAT filesystem 320k, Media descriptor 0xff

user@other_machine:~$ file -v
file-5.17
magic file from /etc/magic:/usr/share/misc/magic

user@other_machine:~$ file -b --mime-type test.mov
binary



Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2015-01-03 12:47 UTC] ab@php.net
-Status: Open +Status: Feedback
 [2015-01-03 12:47 UTC] ab@php.net
Could you please post a minimal file to reproduce? Say cut only the furst few KB or even less that can tell the difference.

Thanks.
 [2015-01-03 18:35 UTC] ab@php.net
-Assigned To: +Assigned To: ab
 [2015-01-07 09:57 UTC] emkael at tlen dot pl
Here's the smallest I could go: https://gist.github.com/emkael/ac2a48ae29d8178a567c

I've truncated the original file to a single frame (note that re-encoding with ffmpeg/lavf56 makes the problem go away) and overwritten actual video data with random bytes (for copyright reasons) - it's still a valid QuickTime file (apart from some warnings due to that random data), it's recognized by ffprobe/ffmpeg (as I've pasted in the gist) and produces "floppy with old FAT filesystem 320k, Media descriptor 0xff" as finfo output.

My best guess is that either the original codec omitted some header data which made the file detection fall to the weaker rule for FAT filesystem or that the FAT filesystem rule was being tested too early.

I've already worked around my specific issue by falling back to a custom magic file which detects MOV files more loosely, but since the upstream Magdir entry was reverted for being "too weak", the same problem might occur with some other, unrelated file formats.
 [2015-01-11 04:22 UTC] php-bugs at lists dot php dot net
No feedback was provided. The bug is being suspended because
we assume that you are no longer experiencing the problem.
If this is not the case and you are able to provide the
information that was requested earlier, please do so and
change the status of the bug back to "Re-Opened". Thank you.
 [2015-01-22 10:57 UTC] ab@php.net
Automatic comment on behalf of ab
Revision: http://git.php.net/?p=php-src.git;a=commit;h=c9d0894ec5872f035bb2d6f1ad78fbcdf2cf20ff
Log: Fixed bug #67647 Bundled libmagic 5.17 does not detect quicktime files correctly
 [2015-01-22 10:57 UTC] ab@php.net
-Status: No Feedback +Status: Closed
 [2015-01-22 11:02 UTC] ab@php.net
@emkael, thanks for the test file :)
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sat Oct 05 16:01:28 2024 UTC