Skip to content

Commit 3ebec92

Browse files
committed
fileinfo: Deprecate finfo_close()
This is for consistency with other `*_close()` functions that have become obsolete when migrating from resources to objects.
1 parent b6bbd80 commit 3ebec92

18 files changed

+28
-19
lines changed

NEWS

+1
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ PHP NEWS
7070
- Fileinfo:
7171
. Upgrade to file 5.46. (nielsdos)
7272
. Change return type of finfo_close() to true. (timwolla)
73+
. Deprecate finfo_close(), since it is a noop. (timwolla)
7374

7475
- FPM:
7576
. Fixed GH-17645 (FPM with httpd ProxyPass does not decode script path).

UPGRADING

+4
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,10 @@ PHP 8.5 UPGRADE NOTES
196196
4. Deprecated Functionality
197197
========================================
198198

199+
- Fileinfo:
200+
. finfo_close() has been deprecated, as it is a noop since the migration
201+
to the finfo resource object in PHP 8.1.
202+
199203
- Hash:
200204
. The MHASH_* constants have been deprecated. These have been overlooked
201205
when the mhash*() function family has been deprecated per

ext/fileinfo/fileinfo.c

+2-1
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,11 @@
3131
#include "php_ini.h"
3232
#include "ext/standard/info.h"
3333
#include "ext/standard/file.h" /* needed for context stuff */
34+
#include "Zend/zend_attributes.h"
35+
#include "Zend/zend_exceptions.h"
3436
#include "php_fileinfo.h"
3537
#include "fileinfo_arginfo.h"
3638
#include "fopen_wrappers.h" /* needed for is_url */
37-
#include "Zend/zend_exceptions.h"
3839

3940
/* {{{ macros and type definitions */
4041
typedef struct _php_fileinfo {

ext/fileinfo/fileinfo.stub.php

+1
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ public function set_flags(int $flags): true {}
9292
/** @refcount 1 */
9393
function finfo_open(int $flags = FILEINFO_NONE, ?string $magic_database = null): finfo|false {}
9494

95+
#[\Deprecated(since: '8.5', message: 'as finfo objects are freed automatically')]
9596
function finfo_close(finfo $finfo): true {}
9697

9798
function finfo_set_flags(finfo $finfo, int $flags): true {}

ext/fileinfo/fileinfo_arginfo.h

+15-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ext/fileinfo/tests/bug79756.phpt

-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ fileinfo
77
$filename = __DIR__ . '/bug79756.xls';
88
$finfo = finfo_open(FILEINFO_MIME);
99
$mime = finfo_file($finfo, $filename);
10-
finfo_close($finfo);
1110
echo $mime;
1211
?>
1312
--EXPECT--

ext/fileinfo/tests/cve-2014-1943-mb.phpt

-2
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,11 @@ $m = "0 byte x\n".
1515
file_put_contents($fd, $a);
1616
$fi = finfo_open(FILEINFO_NONE);
1717
var_dump(finfo_file($fi, $fd));
18-
finfo_close($fi);
1918

2019
file_put_contents($fd, $b);
2120
file_put_contents($fm, $m);
2221
$fi = finfo_open(FILEINFO_NONE, $fm);
2322
var_dump(finfo_file($fi, $fd));
24-
finfo_close($fi);
2523
?>
2624
Done
2725
--CLEAN--

ext/fileinfo/tests/cve-2014-1943.phpt

-2
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,11 @@ $m = "0 byte x\n".
1515
file_put_contents($fd, $a);
1616
$fi = finfo_open(FILEINFO_NONE);
1717
var_dump(finfo_file($fi, $fd));
18-
finfo_close($fi);
1918

2019
file_put_contents($fd, $b);
2120
file_put_contents($fm, $m);
2221
$fi = finfo_open(FILEINFO_NONE, $fm);
2322
var_dump(finfo_file($fi, $fd));
24-
finfo_close($fi);
2523
?>
2624
Done
2725
--CLEAN--

ext/fileinfo/tests/cve-2014-3538-mb.phpt

-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ $fi = finfo_open(FILEINFO_NONE);
1919
$t = microtime(true);
2020
var_dump(finfo_file($fi, $fd));
2121
$t = microtime(true) - $t;
22-
finfo_close($fi);
2322
if ($t < 3) {
2423
echo "Ok\n";
2524
} else {

ext/fileinfo/tests/cve-2014-3538-nojit.phpt

-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ $fi = finfo_open(FILEINFO_NONE);
2323
$t = microtime(true);
2424
var_dump(finfo_file($fi, $fd));
2525
$t = microtime(true) - $t;
26-
finfo_close($fi);
2726
if ($t < 1.5) {
2827
echo "Ok\n";
2928
} else {

ext/fileinfo/tests/cve-2014-3538.phpt

-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ $fi = finfo_open(FILEINFO_NONE);
1919
$t = microtime(true);
2020
var_dump(finfo_file($fi, $fd));
2121
$t = microtime(true) - $t;
22-
finfo_close($fi);
2322
if ($t < 1.5) {
2423
echo "Ok\n";
2524
} else {

ext/fileinfo/tests/finfo_buffer_basic-mb.phpt

-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ foreach( $options as $option ) {
2727
foreach( $buffers as $string ) {
2828
var_dump( finfo_buffer( $finfo, $string, $option ) );
2929
}
30-
finfo_close( $finfo );
3130
}
3231

3332
?>

ext/fileinfo/tests/finfo_buffer_basic.phpt

-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ foreach( $options as $option ) {
2727
foreach( $buffers as $string ) {
2828
var_dump( finfo_buffer( $finfo, $string, $option ) );
2929
}
30-
finfo_close( $finfo );
3130
}
3231

3332
?>

ext/fileinfo/tests/finfo_close_basic.phpt

+2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ unset( $finfo );
2323
*** Testing finfo_close() : basic functionality ***
2424
object(finfo)#%d (0) {
2525
}
26+
27+
Deprecated: Function finfo_close() is deprecated since 8.5, as finfo objects are freed automatically in %s on line %d
2628
bool(true)
2729
object(finfo)#%d (%d) {
2830
}

ext/fileinfo/tests/finfo_close_error.phpt

+3-1
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@ try {
1515
}
1616

1717
?>
18-
--EXPECT--
18+
--EXPECTF--
1919
*** Testing finfo_close() : error conditions ***
2020

2121
-- Testing finfo_close() function with wrong resource type --
22+
23+
Deprecated: Function finfo_close() is deprecated since 8.5, as finfo objects are freed automatically in %s on line %d
2224
finfo_close(): Argument #1 ($finfo) must be of type finfo, resource given

ext/fileinfo/tests/finfo_set_flags_basic-mb.phpt

-2
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ echo "*** Testing finfo_set_flags() : basic functionality ***\n";
1212
var_dump( finfo_set_flags( $finfo, FILEINFO_NONE ) );
1313
var_dump( finfo_set_flags( $finfo, FILEINFO_SYMLINK ) );
1414

15-
finfo_close( $finfo );
16-
1715
// OO way
1816
$finfo = new finfo( FILEINFO_NONE, $magicFile );
1917
var_dump( $finfo->set_flags( FILEINFO_MIME ) );

ext/fileinfo/tests/finfo_set_flags_basic.phpt

-2
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ echo "*** Testing finfo_set_flags() : basic functionality ***\n";
1212
var_dump( finfo_set_flags( $finfo, FILEINFO_NONE ) );
1313
var_dump( finfo_set_flags( $finfo, FILEINFO_SYMLINK ) );
1414

15-
finfo_close( $finfo );
16-
1715
// OO way
1816
$finfo = new finfo( FILEINFO_NONE, $magicFile );
1917
var_dump( $finfo->set_flags( FILEINFO_MIME ) );

ext/fileinfo/tests/finfo_upstream.phpt

-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ foreach($lst as $p) {
1818
if ($i !== $exp) {
1919
echo "'$p' failed\nexp: '$exp'\ngot: '$i'\n";
2020
}
21-
finfo_close($finfo);
2221
}
2322

2423
echo "==DONE==";

0 commit comments

Comments
 (0)