Skip to content

Commit e71b597

Browse files
committed
Merge branch 'PHP-8.2' into PHP-8.3
* PHP-8.2: Fix phpGH-13344: finfo::buffer(): Failed identify data 0:(null)
2 parents 667b08c + c2b671c commit e71b597

File tree

4 files changed

+49
-22
lines changed

4 files changed

+49
-22
lines changed

NEWS

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ PHP NEWS
99
. Fix unlikely memory leak in case of namespace removal with extremely deep
1010
trees. (nielsdos)
1111

12+
- Fileinfo:
13+
. Fixed bug GH-13344 (finfo::buffer(): Failed identify data 0:(null),
14+
backport). (nielsdos)
15+
1216
- FPM:
1317
. Fixed bug #75712 (getenv in php-fpm should not read $_ENV, $_SERVER).
1418
(Jakub Zelenka)

ext/fileinfo/libmagic.patch

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
22
--- libmagic.orig/apprentice.c 2022-09-13 20:46:07.000000000 +0200
3-
+++ libmagic/apprentice.c 2022-10-02 20:39:14.879183555 +0200
3+
+++ libmagic/apprentice.c 2023-10-25 17:56:17.066628832 +0200
44
@@ -48,7 +48,9 @@
55
#ifdef QUICK
66
#include <sys/mman.h>
@@ -864,7 +864,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
864864
break;
865865
diff -u libmagic.orig/ascmagic.c libmagic/ascmagic.c
866866
--- libmagic.orig/ascmagic.c 2022-09-13 20:40:30.000000000 +0200
867-
+++ libmagic/ascmagic.c 2022-10-02 15:56:16.390142333 +0200
867+
+++ libmagic/ascmagic.c 2024-02-13 21:14:11.091069093 +0100
868868
@@ -96,7 +96,7 @@
869869
rv = file_ascmagic_with_encoding(ms, &bb,
870870
ubuf, ulen, code, type, text);
@@ -874,7 +874,7 @@ diff -u libmagic.orig/ascmagic.c libmagic/ascmagic.c
874874

875875
return rv;
876876
}
877-
@@ -143,7 +143,7 @@
877+
@@ -143,13 +143,15 @@
878878
/* malloc size is a conservative overestimate; could be
879879
improved, or at least realloced after conversion. */
880880
mlen = ulen * 6;
@@ -883,7 +883,16 @@ diff -u libmagic.orig/ascmagic.c libmagic/ascmagic.c
883883
file_oomem(ms, mlen);
884884
goto done;
885885
}
886-
@@ -273,8 +273,8 @@
886+
if ((utf8_end = encode_utf8(utf8_buf, mlen, ubuf, ulen))
887+
- == NULL)
888+
+ == NULL) {
889+
+ rv = 0;
890+
goto done;
891+
+ }
892+
buffer_init(&bb, b->fd, &b->st, utf8_buf,
893+
CAST(size_t, utf8_end - utf8_buf));
894+
895+
@@ -273,8 +275,8 @@
887896
goto done;
888897

889898
if (has_long_lines)
@@ -894,7 +903,7 @@ diff -u libmagic.orig/ascmagic.c libmagic/ascmagic.c
894903
goto done;
895904

896905
/*
897-
@@ -330,7 +330,8 @@
906+
@@ -330,7 +332,8 @@
898907
}
899908
rv = 1;
900909
done:
@@ -906,7 +915,7 @@ diff -u libmagic.orig/ascmagic.c libmagic/ascmagic.c
906915
}
907916
diff -u libmagic.orig/buffer.c libmagic/buffer.c
908917
--- libmagic.orig/buffer.c 2022-09-13 20:34:20.000000000 +0200
909-
+++ libmagic/buffer.c 2022-10-02 15:56:16.390142333 +0200
918+
+++ libmagic/buffer.c 2023-10-25 17:56:17.069962152 +0200
910919
@@ -31,19 +31,21 @@
911920
#endif /* lint */
912921

@@ -960,7 +969,7 @@ diff -u libmagic.orig/buffer.c libmagic/buffer.c
960969
}
961970
diff -u libmagic.orig/cdf.c libmagic/cdf.c
962971
--- libmagic.orig/cdf.c 2022-09-13 20:34:25.000000000 +0200
963-
+++ libmagic/cdf.c 2022-10-02 15:56:16.390142333 +0200
972+
+++ libmagic/cdf.c 2023-10-25 17:56:17.069962152 +0200
964973
@@ -43,7 +43,9 @@
965974
#include <err.h>
966975
#endif
@@ -1191,7 +1200,7 @@ diff -u libmagic.orig/cdf.c libmagic/cdf.c
11911200
#endif
11921201
diff -u libmagic.orig/cdf.h libmagic/cdf.h
11931202
--- libmagic.orig/cdf.h 2022-09-13 20:34:29.000000000 +0200
1194-
+++ libmagic/cdf.h 2022-10-02 15:56:16.390142333 +0200
1203+
+++ libmagic/cdf.h 2023-10-25 17:56:17.069962152 +0200
11951204
@@ -37,8 +37,6 @@
11961205

11971206
#ifdef WIN32
@@ -1203,7 +1212,7 @@ diff -u libmagic.orig/cdf.h libmagic/cdf.h
12031212
#define timespec timeval
12041213
diff -u libmagic.orig/compress.c libmagic/compress.c
12051214
--- libmagic.orig/compress.c 2022-09-13 20:34:42.000000000 +0200
1206-
+++ libmagic/compress.c 2022-10-02 15:56:16.390142333 +0200
1215+
+++ libmagic/compress.c 2023-10-25 17:56:17.069962152 +0200
12071216
@@ -63,13 +63,14 @@
12081217
#if defined(HAVE_SYS_TIME_H)
12091218
#include <sys/time.h>
@@ -1312,7 +1321,7 @@ diff -u libmagic.orig/compress.c libmagic/compress.c
13121321
+#endif
13131322
diff -u libmagic.orig/der.c libmagic/der.c
13141323
--- libmagic.orig/der.c 2022-09-13 20:34:54.000000000 +0200
1315-
+++ libmagic/der.c 2022-10-02 15:56:16.390142333 +0200
1324+
+++ libmagic/der.c 2023-10-25 17:56:17.069962152 +0200
13161325
@@ -54,7 +54,9 @@
13171326
#include "magic.h"
13181327
#include "der.h"
@@ -1325,7 +1334,7 @@ diff -u libmagic.orig/der.c libmagic/der.c
13251334
#endif
13261335
diff -u libmagic.orig/elfclass.h libmagic/elfclass.h
13271336
--- libmagic.orig/elfclass.h 2022-09-13 20:35:11.000000000 +0200
1328-
+++ libmagic/elfclass.h 2022-10-02 03:02:46.697523453 +0200
1337+
+++ libmagic/elfclass.h 2023-08-30 22:16:33.784980199 +0200
13291338
@@ -41,7 +41,7 @@
13301339
return toomany(ms, "program headers", phnum);
13311340
flags |= FLAGS_IS_CORE;
@@ -1355,7 +1364,7 @@ diff -u libmagic.orig/elfclass.h libmagic/elfclass.h
13551364
CAST(int, elf_getu16(swap, elfhdr.e_shstrndx)),
13561365
diff -u libmagic.orig/encoding.c libmagic/encoding.c
13571366
--- libmagic.orig/encoding.c 2022-09-13 20:46:07.000000000 +0200
1358-
+++ libmagic/encoding.c 2022-10-02 15:56:16.394142341 +0200
1367+
+++ libmagic/encoding.c 2023-10-25 17:56:17.069962152 +0200
13591368
@@ -97,7 +97,7 @@
13601369
nbytes = ms->encoding_max;
13611370

@@ -1391,7 +1400,7 @@ diff -u libmagic.orig/encoding.c libmagic/encoding.c
13911400
}
13921401
diff -u libmagic.orig/file.h libmagic/file.h
13931402
--- libmagic.orig/file.h 2022-09-13 20:35:30.000000000 +0200
1394-
+++ libmagic/file.h 2022-10-02 15:56:16.394142341 +0200
1403+
+++ libmagic/file.h 2023-10-25 17:56:17.069962152 +0200
13951404
@@ -33,9 +33,7 @@
13961405
#ifndef __file_h__
13971406
#define __file_h__
@@ -1570,7 +1579,7 @@ diff -u libmagic.orig/file.h libmagic/file.h
15701579
#define QUICK
15711580
diff -u libmagic.orig/fsmagic.c libmagic/fsmagic.c
15721581
--- libmagic.orig/fsmagic.c 2022-09-13 20:36:53.000000000 +0200
1573-
+++ libmagic/fsmagic.c 2022-10-02 15:56:16.394142341 +0200
1582+
+++ libmagic/fsmagic.c 2023-10-25 17:56:17.069962152 +0200
15741583
@@ -66,26 +66,10 @@
15751584
# define minor(dev) ((dev) & 0xff)
15761585
#endif
@@ -1863,7 +1872,7 @@ diff -u libmagic.orig/fsmagic.c libmagic/fsmagic.c
18631872
case S_IFSOCK:
18641873
diff -u libmagic.orig/funcs.c libmagic/funcs.c
18651874
--- libmagic.orig/funcs.c 2022-09-13 20:46:07.000000000 +0200
1866-
+++ libmagic/funcs.c 2022-10-02 15:56:16.394142341 +0200
1875+
+++ libmagic/funcs.c 2023-10-25 17:56:17.069962152 +0200
18671876
@@ -66,7 +66,7 @@
18681877
private void
18691878
file_clearbuf(struct magic_set *ms)
@@ -2167,7 +2176,7 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c
21672176
file_clear_closexec(int fd) {
21682177
diff -u libmagic.orig/magic.c libmagic/magic.c
21692178
--- libmagic.orig/magic.c 2022-09-13 20:37:57.000000000 +0200
2170-
+++ libmagic/magic.c 2022-10-02 15:56:16.394142341 +0200
2179+
+++ libmagic/magic.c 2023-10-25 17:56:17.069962152 +0200
21712180
@@ -25,11 +25,6 @@
21722181
* SUCH DAMAGE.
21732182
*/
@@ -2640,8 +2649,8 @@ diff -u libmagic.orig/magic.c libmagic/magic.c
26402649
}
26412650
return file_getbuffer(ms);
26422651
diff -u libmagic.orig/magic.h libmagic/magic.h
2643-
--- libmagic.orig/magic.h 2022-10-02 20:59:55.617810794 +0200
2644-
+++ libmagic/magic.h 2022-10-02 15:56:16.394142341 +0200
2652+
--- libmagic.orig/magic.h 2024-02-13 21:14:59.340250330 +0100
2653+
+++ libmagic/magic.h 2023-10-25 17:56:17.069962152 +0200
26452654
@@ -126,6 +126,7 @@
26462655

26472656
const char *magic_getpath(const char *, int);
@@ -2652,7 +2661,7 @@ diff -u libmagic.orig/magic.h libmagic/magic.h
26522661

26532662
diff -u libmagic.orig/print.c libmagic/print.c
26542663
--- libmagic.orig/print.c 2022-09-13 20:38:34.000000000 +0200
2655-
+++ libmagic/print.c 2022-10-02 15:56:16.394142341 +0200
2664+
+++ libmagic/print.c 2023-10-25 17:56:17.069962152 +0200
26562665
@@ -73,7 +73,7 @@
26572666
if (m->mask_op & FILE_OPINVERSE)
26582667
(void) fputc('~', stderr);
@@ -2709,7 +2718,7 @@ diff -u libmagic.orig/print.c libmagic/print.c
27092718
goto out;
27102719
diff -u libmagic.orig/readcdf.c libmagic/readcdf.c
27112720
--- libmagic.orig/readcdf.c 2022-09-13 20:38:40.000000000 +0200
2712-
+++ libmagic/readcdf.c 2022-10-02 15:56:16.394142341 +0200
2721+
+++ libmagic/readcdf.c 2023-10-25 17:56:17.069962152 +0200
27132722
@@ -31,7 +31,9 @@
27142723

27152724
#include <assert.h>
@@ -2829,7 +2838,7 @@ diff -u libmagic.orig/readcdf.c libmagic/readcdf.c
28292838
if (i != -1)
28302839
diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
28312840
--- libmagic.orig/softmagic.c 2022-09-13 20:46:07.000000000 +0200
2832-
+++ libmagic/softmagic.c 2022-10-02 20:58:58.073503436 +0200
2841+
+++ libmagic/softmagic.c 2023-10-25 17:56:17.069962152 +0200
28332842
@@ -43,7 +43,7 @@
28342843
#include <time.h>
28352844
#include "der.h"

ext/fileinfo/libmagic/ascmagic.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,8 +148,10 @@ file_ascmagic_with_encoding(struct magic_set *ms, const struct buffer *b,
148148
goto done;
149149
}
150150
if ((utf8_end = encode_utf8(utf8_buf, mlen, ubuf, ulen))
151-
== NULL)
151+
== NULL) {
152+
rv = 0;
152153
goto done;
154+
}
153155
buffer_init(&bb, b->fd, &b->st, utf8_buf,
154156
CAST(size_t, utf8_end - utf8_buf));
155157

ext/fileinfo/tests/gh13344.phpt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
--TEST--
2+
GH-13344 (finfo::buffer(): Failed identify data 0:(null))
3+
--EXTENSIONS--
4+
fileinfo
5+
--FILE--
6+
<?php
7+
$data = pack('H*','fffe000000099999');
8+
$mime_type = (new finfo(FILEINFO_MIME))->buffer($data);
9+
echo $mime_type;
10+
?>
11+
--EXPECT--
12+
application/octet-stream; charset=utf-32le

0 commit comments

Comments
 (0)