php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #69214 Regression in libmagic magic.mime printf detection
Submitted: 2015-03-10 15:16 UTC Modified: 2021-08-03 13:25 UTC
From: weierophinney@php.net Assigned: cmb (profile)
Status: Closed Package: Unknown/Other Function
PHP Version: master-Git-2015-03-10 (Git) OS: Ubuntu 14.10
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: weierophinney@php.net
New email:
PHP Version: OS:

 

 [2015-03-10 15:16 UTC] weierophinney@php.net
Description:
------------
We're testing ZF2 against PHP7 nightly. In the last couple days, we started noticing that our tests that use a magic.mime file started failing, with messages of the format "finfo_open(): Warning: Printf format `l' is not valid for type `lequad' in description `...'".

From what I can see, recent changes to ext/fileinfo/libmagic/ have removed support for the following printf sequences:

* l, ll, h, and hh (used as length modifiers)
* .0 (used to indicate zero-padding vs space padding)
* numeric precision

This is particularly problematic, as the lequad and bequad libmagic specifications require specific formats that require such modifiers, and without the above, there is no way to provide a valid magic.mime file to finfo_open(). Researching libmagic, I cannot find a magic.mime file that does NOT have these formats present.

Test script:
---------------
<?php
$magicData = file_get_contents('https://raw.githubusercontent.com/zendframework/zf2/2750340ad353cad9e80525d1c13efcda03e21027/tests/ZendTest/Validator/File/_files/magic.mime');
$magicFile = tempnam(sys_get_temp_dir(), 'mag');
file_put_contents($magicFile, $magicData);

finfo_open(FILEINFO_MIME_TYPE, $magicFile);

Actual result:
--------------
ErrorException: finfo_open(): Failed to load magic database at '...'.

Caused by
ErrorException: finfo_open(): Warning: Printf format `h' is not valid for type `leshort' in description `.%hd'

// and many, many more similar errors

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2015-03-12 20:55 UTC] ab@php.net
-Status: Open +Status: Not a bug
 [2015-03-12 20:55 UTC] ab@php.net
libmagic in master was upgraded to a more recent version, the magic file format is not compatible anymore. For the tests with PHP7 please use some magic from libmagic around 5.20 (just a guess) or best pull the one located ext/fileinfo/tests/magic in the php source tree.

Thanks.
 [2015-03-16 19:29 UTC] weierophinney@php.net
-Status: Not a bug +Status: Re-Opened
 [2015-03-16 19:29 UTC] weierophinney@php.net
Except that ext/fileinfo/tests/magic is still in the old format (see https://github.com/php/php-src/blob/master/ext/fileinfo/tests/magic#L4640 for an example). I've literally not been able to find a magic file that doesn't have these length modifiers.
 [2016-08-26 13:12 UTC] cmb@php.net
-Package: Filesystem function related +Package: Unknown/Other Function
 [2016-08-26 13:12 UTC] cmb@php.net
The package should actually be something like "fileinfo", but that
is not available.
 [2021-08-03 12:39 UTC] cmb@php.net
-Status: Re-Opened +Status: Feedback -Assigned To: +Assigned To: cmb
 [2021-08-03 12:39 UTC] cmb@php.net
Is this still an issue with any of the actively supported PHP
versions[1]?

[1] <https://www.php.net/supported-versions.php>
 [2021-08-03 13:22 UTC] weierophinney@php.net
To my knowledge, this is resolved; we've been testing ZF and Laminas successfully for years now.
 [2021-08-03 13:25 UTC] cmb@php.net
-Status: Feedback +Status: Closed
 [2021-08-03 13:25 UTC] cmb@php.net
Thanks for the swift reply!  I'm closing then.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sun Dec 22 01:01:30 2024 UTC