Skip to content

Commit edbd0b9

Browse files
committed
ext/fileinfo: patch out strcasestr() entirely
Instead of disabling the strcasestr() prototype in libmagic/file.h with -DHAVE_STRCASESTR=1, patch that hunk out to achieve parity on Windows: * Remove the HAVE_STRCASESTR conditional in libmagic/file.h * Don't define HAVE_STRCASESTR=1 in the Unix build * Remove strcasestr.c from the list of sources in config.w32 * Regenerate libmagic.patch This retains the bundled copy of strcasestr.c, but so long as no one adds it to the list of sources, it will not be used. If we were to delete it and regenerate the patch, all of the deleted lines would end up in the repository anyway.
1 parent b283a53 commit edbd0b9

File tree

4 files changed

+19
-13
lines changed

4 files changed

+19
-13
lines changed

ext/fileinfo/config.m4

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ if test "$PHP_FILEINFO" != "no"; then
3434
PHP_NEW_EXTENSION([fileinfo],
3535
[fileinfo.c php_libmagic.c $libmagic_sources],
3636
[$ext_shared],,
37-
[-I@ext_srcdir@/libmagic -DHAVE_STRCASESTR=1])
37+
[-I@ext_srcdir@/libmagic])
3838
PHP_ADD_BUILD_DIR([$ext_builddir/libmagic])
3939
PHP_ADD_EXTENSION_DEP(fileinfo, pcre)
4040

ext/fileinfo/config.w32

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ if (PHP_FILEINFO != 'no') {
88
encoding.c fsmagic.c funcs.c \
99
is_json.c is_tar.c is_simh.c magic.c print.c \
1010
readcdf.c softmagic.c der.c \
11-
strcasestr.c buffer.c is_csv.c";
11+
buffer.c is_csv.c";
1212

1313
EXTENSION('fileinfo', 'fileinfo.c php_libmagic.c', true, "/I" + configure_module_dirname + "/libmagic /I" + configure_module_dirname);
1414
ADD_EXTENSION_DEP('fileinfo', 'pcre');

ext/fileinfo/libmagic.patch

Lines changed: 17 additions & 8 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 2024-11-27 10:37:00.000000000 -0500
3-
+++ libmagic/apprentice.c 2026-03-20 12:02:11.209343516 -0400
3+
+++ libmagic/apprentice.c 2026-03-20 12:10:19.777614667 -0400
44
@@ -32,7 +32,7 @@
55
#include "file.h"
66

@@ -1440,7 +1440,7 @@ diff -u libmagic.orig/cdf.h libmagic/cdf.h
14401440

14411441
diff -u libmagic.orig/compress.c libmagic/compress.c
14421442
--- libmagic.orig/compress.c 2024-11-10 11:52:27.000000000 -0500
1443-
+++ libmagic/compress.c 2026-03-20 12:02:11.209343516 -0400
1443+
+++ libmagic/compress.c 2026-03-20 12:10:19.777614667 -0400
14441444
@@ -64,13 +64,14 @@
14451445
#if defined(HAVE_SYS_TIME_H)
14461446
#include <sys/time.h>
@@ -1727,7 +1727,7 @@ diff -u libmagic.orig/encoding.c libmagic/encoding.c
17271727
}
17281728
diff -u libmagic.orig/file.h libmagic/file.h
17291729
--- libmagic.orig/file.h 2024-11-27 10:37:00.000000000 -0500
1730-
+++ libmagic/file.h 2026-03-20 12:03:18.205380698 -0400
1730+
+++ libmagic/file.h 2026-03-20 15:39:51.133617915 -0400
17311731
@@ -27,15 +27,13 @@
17321732
*/
17331733
/*
@@ -1898,7 +1898,7 @@ diff -u libmagic.orig/file.h libmagic/file.h
18981898
typedef struct {
18991899
char *buf;
19001900
size_t blen;
1901-
@@ -649,19 +629,6 @@
1901+
@@ -649,28 +629,12 @@
19021902
extern file_protected const size_t file_nnames;
19031903
#endif
19041904

@@ -1918,7 +1918,16 @@ diff -u libmagic.orig/file.h libmagic/file.h
19181918
#ifndef HAVE_STRLCPY
19191919
size_t strlcpy(char *, const char *, size_t);
19201920
#endif
1921-
@@ -681,31 +648,6 @@
1921+
#ifndef HAVE_STRLCAT
1922+
size_t strlcat(char *, const char *, size_t);
1923+
#endif
1924+
-#ifndef HAVE_STRCASESTR
1925+
-char *strcasestr(const char *, const char *);
1926+
-#endif
1927+
#ifndef HAVE_GETLINE
1928+
ssize_t getline(char **, size_t *, FILE *);
1929+
ssize_t getdelim(char **, size_t *, int, FILE *);
1930+
@@ -681,31 +645,6 @@
19221931
#ifndef HAVE_ASCTIME_R
19231932
char *asctime_r(const struct tm *, char *);
19241933
#endif
@@ -2608,7 +2617,7 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c
26082617
file_clear_closexec(int fd) {
26092618
diff -u libmagic.orig/magic.c libmagic/magic.c
26102619
--- libmagic.orig/magic.c 2024-06-19 12:18:53.000000000 -0400
2611-
+++ libmagic/magic.c 2026-03-20 12:02:11.209343516 -0400
2620+
+++ libmagic/magic.c 2026-03-20 12:10:19.777614667 -0400
26122621
@@ -25,11 +25,6 @@
26132622
* SUCH DAMAGE.
26142623
*/
@@ -3081,8 +3090,8 @@ diff -u libmagic.orig/magic.c libmagic/magic.c
30813090
}
30823091
return file_getbuffer(ms);
30833092
diff -u libmagic.orig/magic.h libmagic/magic.h
3084-
--- libmagic.orig/magic.h 2026-03-20 12:07:07.493507951 -0400
3085-
+++ libmagic/magic.h 2026-03-20 12:02:11.209343516 -0400
3093+
--- libmagic.orig/magic.h 2026-03-20 15:48:25.885903599 -0400
3094+
+++ libmagic/magic.h 2026-03-20 12:10:19.777614667 -0400
30863095
@@ -47,8 +47,6 @@
30873096
* extensions */
30883097
#define MAGIC_COMPRESS_TRANSP 0x2000000 /* Check inside compressed files

ext/fileinfo/libmagic/file.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -635,9 +635,6 @@ size_t strlcpy(char *, const char *, size_t);
635635
#ifndef HAVE_STRLCAT
636636
size_t strlcat(char *, const char *, size_t);
637637
#endif
638-
#ifndef HAVE_STRCASESTR
639-
char *strcasestr(const char *, const char *);
640-
#endif
641638
#ifndef HAVE_GETLINE
642639
ssize_t getline(char **, size_t *, FILE *);
643640
ssize_t getdelim(char **, size_t *, int, FILE *);

0 commit comments

Comments
 (0)