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
View Add Comment Developer Edit
Anyone can comment on a bug. Have a simpler test case? Does it work for you on a different platform? Let us know!
Just going to say 'Me too!'? Don't clutter the database with that please !
Your email address:
MUST BE VALID
Solve the problem:
37 - 15 = ?
Subscribe to this entry?

 
 [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

Add a Patch

Pull Requests

Add a Pull Request

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: Thu Apr 25 01:01:30 2024 UTC