Skip to content

Commit 45e623d

Browse files
devnexencmb69
authored andcommitted
libmagic: use php_memnstr instead of memmem
Closes GH-8391.
1 parent 54de945 commit 45e623d

File tree

2 files changed

+85
-66
lines changed

2 files changed

+85
-66
lines changed

ext/fileinfo/libmagic.patch

Lines changed: 83 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
diff -ur libmagic.orig/apprentice.c libmagic/apprentice.c
2-
--- libmagic.orig/apprentice.c 2021-02-23 01:51:11.000000000 +0100
3-
+++ libmagic/apprentice.c 2021-04-06 21:34:57.332978922 +0200
1+
diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
2+
--- libmagic.orig/apprentice.c 2021-02-23 00:51:11.000000000 +0000
3+
+++ libmagic/apprentice.c 2022-04-25 16:00:13.974219365 +0100
44
@@ -29,6 +29,8 @@
55
* apprentice - make one pass through /etc/magic, learning its secrets.
66
*/
@@ -925,9 +925,9 @@ diff -ur libmagic.orig/apprentice.c libmagic/apprentice.c
925925
m->str_range = swap4(m->str_range);
926926
m->str_flags = swap4(m->str_flags);
927927
}
928-
diff -ur libmagic.orig/ascmagic.c libmagic/ascmagic.c
929-
--- libmagic.orig/ascmagic.c 2021-02-23 01:49:06.000000000 +0100
930-
+++ libmagic/ascmagic.c 2021-04-06 21:34:57.332978922 +0200
928+
diff -u libmagic.orig/ascmagic.c libmagic/ascmagic.c
929+
--- libmagic.orig/ascmagic.c 2021-02-23 00:49:06.000000000 +0000
930+
+++ libmagic/ascmagic.c 2022-04-25 16:00:13.974219365 +0100
931931
@@ -96,7 +96,7 @@
932932
rv = file_ascmagic_with_encoding(ms, &bb,
933933
ubuf, ulen, code, type, text);
@@ -956,9 +956,9 @@ diff -ur libmagic.orig/ascmagic.c libmagic/ascmagic.c
956956

957957
return rv;
958958
}
959-
diff -ur libmagic.orig/buffer.c libmagic/buffer.c
960-
--- libmagic.orig/buffer.c 2021-02-23 01:49:26.000000000 +0100
961-
+++ libmagic/buffer.c 2021-04-06 21:34:57.332978922 +0200
959+
diff -u libmagic.orig/buffer.c libmagic/buffer.c
960+
--- libmagic.orig/buffer.c 2021-02-23 00:49:26.000000000 +0000
961+
+++ libmagic/buffer.c 2022-04-15 20:27:23.837624723 +0100
962962
@@ -31,19 +31,23 @@
963963
#endif /* lint */
964964

@@ -1012,9 +1012,9 @@ diff -ur libmagic.orig/buffer.c libmagic/buffer.c
10121012
b->ebuf = NULL;
10131013
goto out;
10141014
}
1015-
diff -ur libmagic.orig/cdf.c libmagic/cdf.c
1016-
--- libmagic.orig/cdf.c 2021-02-23 01:49:06.000000000 +0100
1017-
+++ libmagic/cdf.c 2021-04-06 21:34:57.332978922 +0200
1015+
diff -u libmagic.orig/cdf.c libmagic/cdf.c
1016+
--- libmagic.orig/cdf.c 2021-02-23 00:49:06.000000000 +0000
1017+
+++ libmagic/cdf.c 2022-04-15 20:27:23.837624723 +0100
10181018
@@ -43,7 +43,17 @@
10191019
#include <err.h>
10201020
#endif
@@ -1247,9 +1247,9 @@ diff -ur libmagic.orig/cdf.c libmagic/cdf.c
12471247
}
12481248

12491249
#endif
1250-
diff -ur libmagic.orig/cdf.h libmagic/cdf.h
1251-
--- libmagic.orig/cdf.h 2021-02-23 01:49:06.000000000 +0100
1252-
+++ libmagic/cdf.h 2021-04-06 21:34:57.332978922 +0200
1250+
diff -u libmagic.orig/cdf.h libmagic/cdf.h
1251+
--- libmagic.orig/cdf.h 2021-02-23 00:49:06.000000000 +0000
1252+
+++ libmagic/cdf.h 2022-04-15 20:27:23.837624723 +0100
12531253
@@ -35,10 +35,10 @@
12541254
#ifndef _H_CDF_
12551255
#define _H_CDF_
@@ -1264,9 +1264,9 @@ diff -ur libmagic.orig/cdf.h libmagic/cdf.h
12641264
#endif
12651265
#ifdef __DJGPP__
12661266
#define timespec timeval
1267-
diff -ur libmagic.orig/cdf_time.c libmagic/cdf_time.c
1268-
--- libmagic.orig/cdf_time.c 2021-02-23 01:49:06.000000000 +0100
1269-
+++ libmagic/cdf_time.c 2021-04-06 21:34:57.336978894 +0200
1267+
diff -u libmagic.orig/cdf_time.c libmagic/cdf_time.c
1268+
--- libmagic.orig/cdf_time.c 2021-02-23 00:49:06.000000000 +0000
1269+
+++ libmagic/cdf_time.c 2022-04-15 20:27:23.837624723 +0100
12701270
@@ -23,6 +23,7 @@
12711271
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
12721272
* POSSIBILITY OF SUCH DAMAGE.
@@ -1293,9 +1293,9 @@ diff -ur libmagic.orig/cdf_time.c libmagic/cdf_time.c
12931293
if (ptr != NULL)
12941294
return buf;
12951295
(void)snprintf(buf, 26, "*Bad* %#16.16" INT64_T_FORMAT "x\n",
1296-
diff -ur libmagic.orig/compress.c libmagic/compress.c
1297-
--- libmagic.orig/compress.c 2021-02-23 01:49:07.000000000 +0100
1298-
+++ libmagic/compress.c 2021-04-06 21:34:57.336978894 +0200
1296+
diff -u libmagic.orig/compress.c libmagic/compress.c
1297+
--- libmagic.orig/compress.c 2021-02-23 00:49:07.000000000 +0000
1298+
+++ libmagic/compress.c 2022-04-25 16:00:13.978219426 +0100
12991299
@@ -51,7 +51,7 @@
13001300
#ifndef HAVE_SIG_T
13011301
typedef void (*sig_t)(int);
@@ -1430,9 +1430,9 @@ diff -ur libmagic.orig/compress.c libmagic/compress.c
14301430
}
14311431
#endif
14321432
+#endif
1433-
diff -ur libmagic.orig/der.c libmagic/der.c
1434-
--- libmagic.orig/der.c 2021-02-23 01:49:06.000000000 +0100
1435-
+++ libmagic/der.c 2021-04-06 21:34:57.336978894 +0200
1433+
diff -u libmagic.orig/der.c libmagic/der.c
1434+
--- libmagic.orig/der.c 2021-02-23 00:49:06.000000000 +0000
1435+
+++ libmagic/der.c 2022-04-25 16:00:13.978219426 +0100
14361436
@@ -54,7 +54,9 @@
14371437
#include "magic.h"
14381438
#include "der.h"
@@ -1443,9 +1443,9 @@ diff -ur libmagic.orig/der.c libmagic/der.c
14431443
#include <sys/stat.h>
14441444
#include <err.h>
14451445
#endif
1446-
diff -ur libmagic.orig/elfclass.h libmagic/elfclass.h
1447-
--- libmagic.orig/elfclass.h 2021-02-23 01:49:06.000000000 +0100
1448-
+++ libmagic/elfclass.h 2021-04-06 21:34:57.336978894 +0200
1446+
diff -u libmagic.orig/elfclass.h libmagic/elfclass.h
1447+
--- libmagic.orig/elfclass.h 2021-02-23 00:49:06.000000000 +0000
1448+
+++ libmagic/elfclass.h 2022-04-15 20:27:23.837624723 +0100
14491449
@@ -41,7 +41,7 @@
14501450
return toomany(ms, "program headers", phnum);
14511451
flags |= FLAGS_IS_CORE;
@@ -1473,9 +1473,9 @@ diff -ur libmagic.orig/elfclass.h libmagic/elfclass.h
14731473
CAST(size_t, elf_getu16(swap, elfhdr.e_shentsize)),
14741474
fsize, elf_getu16(swap, elfhdr.e_machine),
14751475
CAST(int, elf_getu16(swap, elfhdr.e_shstrndx)),
1476-
diff -ur libmagic.orig/encoding.c libmagic/encoding.c
1477-
--- libmagic.orig/encoding.c 2021-02-23 01:49:06.000000000 +0100
1478-
+++ libmagic/encoding.c 2021-04-06 21:34:57.336978894 +0200
1476+
diff -u libmagic.orig/encoding.c libmagic/encoding.c
1477+
--- libmagic.orig/encoding.c 2021-02-23 00:49:06.000000000 +0000
1478+
+++ libmagic/encoding.c 2022-04-25 16:00:13.978219426 +0100
14791479
@@ -98,14 +98,14 @@
14801480
nbytes = ms->encoding_max;
14811481

@@ -1514,9 +1514,9 @@ diff -ur libmagic.orig/encoding.c libmagic/encoding.c
15141514
} \
15151515
if (u < 3) \
15161516
return 0; \
1517-
diff -ur libmagic.orig/file.h libmagic/file.h
1518-
--- libmagic.orig/file.h 2021-02-23 01:49:06.000000000 +0100
1519-
+++ libmagic/file.h 2021-04-06 21:34:57.336978894 +0200
1517+
diff -u libmagic.orig/file.h libmagic/file.h
1518+
--- libmagic.orig/file.h 2021-02-23 00:49:06.000000000 +0000
1519+
+++ libmagic/file.h 2022-04-25 16:00:13.978219426 +0100
15201520
@@ -33,17 +33,14 @@
15211521
#ifndef __file_h__
15221522
#define __file_h__
@@ -1775,9 +1775,9 @@ diff -ur libmagic.orig/file.h libmagic/file.h
17751775
+#endif
17761776
+
17771777
#endif /* __file_h__ */
1778-
diff -ur libmagic.orig/fsmagic.c libmagic/fsmagic.c
1779-
--- libmagic.orig/fsmagic.c 2021-02-23 01:49:06.000000000 +0100
1780-
+++ libmagic/fsmagic.c 2021-04-06 21:34:57.336978894 +0200
1778+
diff -u libmagic.orig/fsmagic.c libmagic/fsmagic.c
1779+
--- libmagic.orig/fsmagic.c 2021-02-23 00:49:06.000000000 +0000
1780+
+++ libmagic/fsmagic.c 2022-04-15 20:27:23.837624723 +0100
17811781
@@ -66,26 +66,10 @@
17821782
# define minor(dev) ((dev) & 0xff)
17831783
#endif
@@ -2068,9 +2068,9 @@ diff -ur libmagic.orig/fsmagic.c libmagic/fsmagic.c
20682068
#ifdef S_IFSOCK
20692069
#ifndef __COHERENT__
20702070
case S_IFSOCK:
2071-
diff -ur libmagic.orig/funcs.c libmagic/funcs.c
2072-
--- libmagic.orig/funcs.c 2021-02-23 01:49:06.000000000 +0100
2073-
+++ libmagic/funcs.c 2021-04-06 21:34:57.336978894 +0200
2071+
diff -u libmagic.orig/funcs.c libmagic/funcs.c
2072+
--- libmagic.orig/funcs.c 2021-02-23 00:49:06.000000000 +0000
2073+
+++ libmagic/funcs.c 2022-04-25 16:00:13.978219426 +0100
20742074
@@ -51,6 +51,13 @@
20752075
#define SIZE_MAX ((size_t)~0)
20762076
#endif
@@ -2388,9 +2388,9 @@ diff -ur libmagic.orig/funcs.c libmagic/funcs.c
23882388

23892389
protected char *
23902390
file_strtrim(char *str)
2391-
diff -ur libmagic.orig/magic.c libmagic/magic.c
2392-
--- libmagic.orig/magic.c 2021-02-23 01:49:06.000000000 +0100
2393-
+++ libmagic/magic.c 2021-04-06 21:34:57.336978894 +0200
2391+
diff -u libmagic.orig/magic.c libmagic/magic.c
2392+
--- libmagic.orig/magic.c 2021-02-23 00:49:06.000000000 +0000
2393+
+++ libmagic/magic.c 2022-04-25 16:00:13.978219426 +0100
23942394
@@ -25,11 +25,6 @@
23952395
* SUCH DAMAGE.
23962396
*/
@@ -2867,9 +2867,9 @@ diff -ur libmagic.orig/magic.c libmagic/magic.c
28672867
return NULL;
28682868
}
28692869
return file_getbuffer(ms);
2870-
diff -ur libmagic.orig/magic.h libmagic/magic.h
2871-
--- libmagic.orig/magic.h 2021-04-06 22:37:37.647426536 +0200
2872-
+++ libmagic/magic.h 2021-04-06 21:34:57.336978894 +0200
2870+
diff -u libmagic.orig/magic.h libmagic/magic.h
2871+
--- libmagic.orig/magic.h 2022-04-25 16:01:07.619036406 +0100
2872+
+++ libmagic/magic.h 2022-04-25 16:00:13.978219426 +0100
28732873
@@ -126,6 +126,7 @@
28742874

28752875
const char *magic_getpath(const char *, int);
@@ -2878,9 +2878,9 @@ diff -ur libmagic.orig/magic.h libmagic/magic.h
28782878
const char *magic_descriptor(magic_t, int);
28792879
const char *magic_buffer(magic_t, const void *, size_t);
28802880

2881-
diff -ur libmagic.orig/print.c libmagic/print.c
2882-
--- libmagic.orig/print.c 2021-02-23 01:49:07.000000000 +0100
2883-
+++ libmagic/print.c 2021-04-06 21:34:57.340978869 +0200
2881+
diff -u libmagic.orig/print.c libmagic/print.c
2882+
--- libmagic.orig/print.c 2021-02-23 00:49:07.000000000 +0000
2883+
+++ libmagic/print.c 2022-04-15 20:27:23.837624723 +0100
28842884
@@ -28,6 +28,7 @@
28852885
/*
28862886
* print.c - debugging printout routines
@@ -2943,9 +2943,9 @@ diff -ur libmagic.orig/print.c libmagic/print.c
29432943

29442944
if (pp == NULL)
29452945
goto out;
2946-
diff -ur libmagic.orig/readcdf.c libmagic/readcdf.c
2947-
--- libmagic.orig/readcdf.c 2021-02-23 01:49:08.000000000 +0100
2948-
+++ libmagic/readcdf.c 2021-04-06 21:34:57.340978869 +0200
2946+
diff -u libmagic.orig/readcdf.c libmagic/readcdf.c
2947+
--- libmagic.orig/readcdf.c 2021-02-23 00:49:08.000000000 +0000
2948+
+++ libmagic/readcdf.c 2022-04-15 20:27:23.837624723 +0100
29492949
@@ -31,7 +31,11 @@
29502950

29512951
#include <assert.h>
@@ -3067,9 +3067,9 @@ diff -ur libmagic.orig/readcdf.c libmagic/readcdf.c
30673067
out0:
30683068
/* If we handled it already, return */
30693069
if (i != -1)
3070-
diff -ur libmagic.orig/softmagic.c libmagic/softmagic.c
3071-
--- libmagic.orig/softmagic.c 2021-02-23 01:49:06.000000000 +0100
3072-
+++ libmagic/softmagic.c 2021-04-06 21:34:57.340978869 +0200
3070+
diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
3071+
--- libmagic.orig/softmagic.c 2021-02-23 00:49:06.000000000 +0000
3072+
+++ libmagic/softmagic.c 2022-04-25 16:00:30.222464809 +0100
30733073
@@ -43,6 +43,10 @@
30743074
#include <time.h>
30753075
#include "der.h"
@@ -3342,7 +3342,32 @@ diff -ur libmagic.orig/softmagic.c libmagic/softmagic.c
33423342
private int
33433343
magiccheck(struct magic_set *ms, struct magic *m)
33443344
{
3345-
@@ -2176,65 +2235,77 @@
3345+
@@ -2144,14 +2203,13 @@
3346+
slen = MIN(m->vallen, sizeof(m->value.s));
3347+
l = 0;
3348+
v = 0;
3349+
-#ifdef HAVE_MEMMEM
3350+
if (slen > 0 && m->str_flags == 0) {
3351+
const char *found;
3352+
idx = m->str_range + slen;
3353+
if (m->str_range == 0 || ms->search.s_len < idx)
3354+
idx = ms->search.s_len;
3355+
- found = CAST(const char *, memmem(ms->search.s, idx,
3356+
- m->value.s, slen));
3357+
+ found = CAST(const char *, php_memnstr(ms->search.s,
3358+
+ m->value.s, slen, ms->search.s + idx));
3359+
if (!found)
3360+
return 0;
3361+
idx = found - ms->search.s;
3362+
@@ -2159,7 +2217,6 @@
3363+
ms->search.rm_len = ms->search.s_len - idx;
3364+
break;
3365+
}
3366+
-#endif
3367+
3368+
for (idx = 0; m->str_range == 0 || idx < m->str_range; idx++) {
3369+
if (slen + idx > ms->search.s_len)
3370+
@@ -2176,65 +2233,77 @@
33463371
break;
33473372
}
33483373
case FILE_REGEX: {
@@ -3471,9 +3496,9 @@ diff -ur libmagic.orig/softmagic.c libmagic/softmagic.c
34713496
break;
34723497
}
34733498
case FILE_USE:
3474-
diff -ur libmagic.orig/strcasestr.c libmagic/strcasestr.c
3475-
--- libmagic.orig/strcasestr.c 2021-02-23 01:49:12.000000000 +0100
3476-
+++ libmagic/strcasestr.c 2021-04-06 21:34:57.340978869 +0200
3499+
diff -u libmagic.orig/strcasestr.c libmagic/strcasestr.c
3500+
--- libmagic.orig/strcasestr.c 2021-02-23 00:49:12.000000000 +0000
3501+
+++ libmagic/strcasestr.c 2022-04-15 20:27:23.837624723 +0100
34773502
@@ -39,6 +39,8 @@
34783503

34793504
#include "file.h"
@@ -3483,7 +3508,3 @@ diff -ur libmagic.orig/strcasestr.c libmagic/strcasestr.c
34833508
#include <assert.h>
34843509
#include <ctype.h>
34853510
#include <string.h>
3486-
--- libmagic/config.h 2021-04-06 22:19:57.552120067 +0200
3487-
+++ /dev/null 2021-03-31 20:37:24.776503884 +0200
3488-
@@ -1 +0,0 @@
3489-
-#include "php.h"

ext/fileinfo/libmagic/softmagic.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2203,22 +2203,20 @@ magiccheck(struct magic_set *ms, struct magic *m)
22032203
slen = MIN(m->vallen, sizeof(m->value.s));
22042204
l = 0;
22052205
v = 0;
2206-
#ifdef HAVE_MEMMEM
22072206
if (slen > 0 && m->str_flags == 0) {
22082207
const char *found;
22092208
idx = m->str_range + slen;
22102209
if (m->str_range == 0 || ms->search.s_len < idx)
22112210
idx = ms->search.s_len;
2212-
found = CAST(const char *, memmem(ms->search.s, idx,
2213-
m->value.s, slen));
2211+
found = CAST(const char *, php_memnstr(ms->search.s,
2212+
m->value.s, slen, ms->search.s + idx));
22142213
if (!found)
22152214
return 0;
22162215
idx = found - ms->search.s;
22172216
ms->search.offset += idx;
22182217
ms->search.rm_len = ms->search.s_len - idx;
22192218
break;
22202219
}
2221-
#endif
22222220

22232221
for (idx = 0; m->str_range == 0 || idx < m->str_range; idx++) {
22242222
if (slen + idx > ms->search.s_len)

0 commit comments

Comments
 (0)