Skip to content

adding memmem fallback implementation proposal. #8391

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
145 changes: 83 additions & 62 deletions ext/fileinfo/libmagic.patch
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
diff -ur libmagic.orig/apprentice.c libmagic/apprentice.c
--- libmagic.orig/apprentice.c 2021-02-23 01:51:11.000000000 +0100
+++ libmagic/apprentice.c 2021-04-06 21:34:57.332978922 +0200
diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
--- libmagic.orig/apprentice.c 2021-02-23 00:51:11.000000000 +0000
+++ libmagic/apprentice.c 2022-04-25 16:00:13.974219365 +0100
@@ -29,6 +29,8 @@
* apprentice - make one pass through /etc/magic, learning its secrets.
*/
Expand Down Expand Up @@ -925,9 +925,9 @@ diff -ur libmagic.orig/apprentice.c libmagic/apprentice.c
m->str_range = swap4(m->str_range);
m->str_flags = swap4(m->str_flags);
}
diff -ur libmagic.orig/ascmagic.c libmagic/ascmagic.c
--- libmagic.orig/ascmagic.c 2021-02-23 01:49:06.000000000 +0100
+++ libmagic/ascmagic.c 2021-04-06 21:34:57.332978922 +0200
diff -u libmagic.orig/ascmagic.c libmagic/ascmagic.c
--- libmagic.orig/ascmagic.c 2021-02-23 00:49:06.000000000 +0000
+++ libmagic/ascmagic.c 2022-04-25 16:00:13.974219365 +0100
@@ -96,7 +96,7 @@
rv = file_ascmagic_with_encoding(ms, &bb,
ubuf, ulen, code, type, text);
Expand Down Expand Up @@ -956,9 +956,9 @@ diff -ur libmagic.orig/ascmagic.c libmagic/ascmagic.c

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

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

#endif
diff -ur libmagic.orig/cdf.h libmagic/cdf.h
--- libmagic.orig/cdf.h 2021-02-23 01:49:06.000000000 +0100
+++ libmagic/cdf.h 2021-04-06 21:34:57.332978922 +0200
diff -u libmagic.orig/cdf.h libmagic/cdf.h
--- libmagic.orig/cdf.h 2021-02-23 00:49:06.000000000 +0000
+++ libmagic/cdf.h 2022-04-15 20:27:23.837624723 +0100
@@ -35,10 +35,10 @@
#ifndef _H_CDF_
#define _H_CDF_
Expand All @@ -1264,9 +1264,9 @@ diff -ur libmagic.orig/cdf.h libmagic/cdf.h
#endif
#ifdef __DJGPP__
#define timespec timeval
diff -ur libmagic.orig/cdf_time.c libmagic/cdf_time.c
--- libmagic.orig/cdf_time.c 2021-02-23 01:49:06.000000000 +0100
+++ libmagic/cdf_time.c 2021-04-06 21:34:57.336978894 +0200
diff -u libmagic.orig/cdf_time.c libmagic/cdf_time.c
--- libmagic.orig/cdf_time.c 2021-02-23 00:49:06.000000000 +0000
+++ libmagic/cdf_time.c 2022-04-15 20:27:23.837624723 +0100
@@ -23,6 +23,7 @@
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
Expand All @@ -1293,9 +1293,9 @@ diff -ur libmagic.orig/cdf_time.c libmagic/cdf_time.c
if (ptr != NULL)
return buf;
(void)snprintf(buf, 26, "*Bad* %#16.16" INT64_T_FORMAT "x\n",
diff -ur libmagic.orig/compress.c libmagic/compress.c
--- libmagic.orig/compress.c 2021-02-23 01:49:07.000000000 +0100
+++ libmagic/compress.c 2021-04-06 21:34:57.336978894 +0200
diff -u libmagic.orig/compress.c libmagic/compress.c
--- libmagic.orig/compress.c 2021-02-23 00:49:07.000000000 +0000
+++ libmagic/compress.c 2022-04-25 16:00:13.978219426 +0100
@@ -51,7 +51,7 @@
#ifndef HAVE_SIG_T
typedef void (*sig_t)(int);
Expand Down Expand Up @@ -1430,9 +1430,9 @@ diff -ur libmagic.orig/compress.c libmagic/compress.c
}
#endif
+#endif
diff -ur libmagic.orig/der.c libmagic/der.c
--- libmagic.orig/der.c 2021-02-23 01:49:06.000000000 +0100
+++ libmagic/der.c 2021-04-06 21:34:57.336978894 +0200
diff -u libmagic.orig/der.c libmagic/der.c
--- libmagic.orig/der.c 2021-02-23 00:49:06.000000000 +0000
+++ libmagic/der.c 2022-04-25 16:00:13.978219426 +0100
@@ -54,7 +54,9 @@
#include "magic.h"
#include "der.h"
Expand All @@ -1443,9 +1443,9 @@ diff -ur libmagic.orig/der.c libmagic/der.c
#include <sys/stat.h>
#include <err.h>
#endif
diff -ur libmagic.orig/elfclass.h libmagic/elfclass.h
--- libmagic.orig/elfclass.h 2021-02-23 01:49:06.000000000 +0100
+++ libmagic/elfclass.h 2021-04-06 21:34:57.336978894 +0200
diff -u libmagic.orig/elfclass.h libmagic/elfclass.h
--- libmagic.orig/elfclass.h 2021-02-23 00:49:06.000000000 +0000
+++ libmagic/elfclass.h 2022-04-15 20:27:23.837624723 +0100
@@ -41,7 +41,7 @@
return toomany(ms, "program headers", phnum);
flags |= FLAGS_IS_CORE;
Expand Down Expand Up @@ -1473,9 +1473,9 @@ diff -ur libmagic.orig/elfclass.h libmagic/elfclass.h
CAST(size_t, elf_getu16(swap, elfhdr.e_shentsize)),
fsize, elf_getu16(swap, elfhdr.e_machine),
CAST(int, elf_getu16(swap, elfhdr.e_shstrndx)),
diff -ur libmagic.orig/encoding.c libmagic/encoding.c
--- libmagic.orig/encoding.c 2021-02-23 01:49:06.000000000 +0100
+++ libmagic/encoding.c 2021-04-06 21:34:57.336978894 +0200
diff -u libmagic.orig/encoding.c libmagic/encoding.c
--- libmagic.orig/encoding.c 2021-02-23 00:49:06.000000000 +0000
+++ libmagic/encoding.c 2022-04-25 16:00:13.978219426 +0100
@@ -98,14 +98,14 @@
nbytes = ms->encoding_max;

Expand Down Expand Up @@ -1514,9 +1514,9 @@ diff -ur libmagic.orig/encoding.c libmagic/encoding.c
} \
if (u < 3) \
return 0; \
diff -ur libmagic.orig/file.h libmagic/file.h
--- libmagic.orig/file.h 2021-02-23 01:49:06.000000000 +0100
+++ libmagic/file.h 2021-04-06 21:34:57.336978894 +0200
diff -u libmagic.orig/file.h libmagic/file.h
--- libmagic.orig/file.h 2021-02-23 00:49:06.000000000 +0000
+++ libmagic/file.h 2022-04-25 16:00:13.978219426 +0100
@@ -33,17 +33,14 @@
#ifndef __file_h__
#define __file_h__
Expand Down Expand Up @@ -1775,9 +1775,9 @@ diff -ur libmagic.orig/file.h libmagic/file.h
+#endif
+
#endif /* __file_h__ */
diff -ur libmagic.orig/fsmagic.c libmagic/fsmagic.c
--- libmagic.orig/fsmagic.c 2021-02-23 01:49:06.000000000 +0100
+++ libmagic/fsmagic.c 2021-04-06 21:34:57.336978894 +0200
diff -u libmagic.orig/fsmagic.c libmagic/fsmagic.c
--- libmagic.orig/fsmagic.c 2021-02-23 00:49:06.000000000 +0000
+++ libmagic/fsmagic.c 2022-04-15 20:27:23.837624723 +0100
@@ -66,26 +66,10 @@
# define minor(dev) ((dev) & 0xff)
#endif
Expand Down Expand Up @@ -2068,9 +2068,9 @@ diff -ur libmagic.orig/fsmagic.c libmagic/fsmagic.c
#ifdef S_IFSOCK
#ifndef __COHERENT__
case S_IFSOCK:
diff -ur libmagic.orig/funcs.c libmagic/funcs.c
--- libmagic.orig/funcs.c 2021-02-23 01:49:06.000000000 +0100
+++ libmagic/funcs.c 2021-04-06 21:34:57.336978894 +0200
diff -u libmagic.orig/funcs.c libmagic/funcs.c
--- libmagic.orig/funcs.c 2021-02-23 00:49:06.000000000 +0000
+++ libmagic/funcs.c 2022-04-25 16:00:13.978219426 +0100
@@ -51,6 +51,13 @@
#define SIZE_MAX ((size_t)~0)
#endif
Expand Down Expand Up @@ -2388,9 +2388,9 @@ diff -ur libmagic.orig/funcs.c libmagic/funcs.c

protected char *
file_strtrim(char *str)
diff -ur libmagic.orig/magic.c libmagic/magic.c
--- libmagic.orig/magic.c 2021-02-23 01:49:06.000000000 +0100
+++ libmagic/magic.c 2021-04-06 21:34:57.336978894 +0200
diff -u libmagic.orig/magic.c libmagic/magic.c
--- libmagic.orig/magic.c 2021-02-23 00:49:06.000000000 +0000
+++ libmagic/magic.c 2022-04-25 16:00:13.978219426 +0100
@@ -25,11 +25,6 @@
* SUCH DAMAGE.
*/
Expand Down Expand Up @@ -2867,9 +2867,9 @@ diff -ur libmagic.orig/magic.c libmagic/magic.c
return NULL;
}
return file_getbuffer(ms);
diff -ur libmagic.orig/magic.h libmagic/magic.h
--- libmagic.orig/magic.h 2021-04-06 22:37:37.647426536 +0200
+++ libmagic/magic.h 2021-04-06 21:34:57.336978894 +0200
diff -u libmagic.orig/magic.h libmagic/magic.h
--- libmagic.orig/magic.h 2022-04-25 16:01:07.619036406 +0100
+++ libmagic/magic.h 2022-04-25 16:00:13.978219426 +0100
@@ -126,6 +126,7 @@

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

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

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

#include <assert.h>
Expand Down Expand Up @@ -3067,9 +3067,9 @@ diff -ur libmagic.orig/readcdf.c libmagic/readcdf.c
out0:
/* If we handled it already, return */
if (i != -1)
diff -ur libmagic.orig/softmagic.c libmagic/softmagic.c
--- libmagic.orig/softmagic.c 2021-02-23 01:49:06.000000000 +0100
+++ libmagic/softmagic.c 2021-04-06 21:34:57.340978869 +0200
diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
--- libmagic.orig/softmagic.c 2021-02-23 00:49:06.000000000 +0000
+++ libmagic/softmagic.c 2022-04-25 16:00:30.222464809 +0100
@@ -43,6 +43,10 @@
#include <time.h>
#include "der.h"
Expand Down Expand Up @@ -3342,7 +3342,32 @@ diff -ur libmagic.orig/softmagic.c libmagic/softmagic.c
private int
magiccheck(struct magic_set *ms, struct magic *m)
{
@@ -2176,65 +2235,77 @@
@@ -2144,14 +2203,13 @@
slen = MIN(m->vallen, sizeof(m->value.s));
l = 0;
v = 0;
-#ifdef HAVE_MEMMEM
if (slen > 0 && m->str_flags == 0) {
const char *found;
idx = m->str_range + slen;
if (m->str_range == 0 || ms->search.s_len < idx)
idx = ms->search.s_len;
- found = CAST(const char *, memmem(ms->search.s, idx,
- m->value.s, slen));
+ found = CAST(const char *, php_memnstr(ms->search.s,
+ m->value.s, slen, ms->search.s + idx));
if (!found)
return 0;
idx = found - ms->search.s;
@@ -2159,7 +2217,6 @@
ms->search.rm_len = ms->search.s_len - idx;
break;
}
-#endif

for (idx = 0; m->str_range == 0 || idx < m->str_range; idx++) {
if (slen + idx > ms->search.s_len)
@@ -2176,65 +2233,77 @@
break;
}
case FILE_REGEX: {
Expand Down Expand Up @@ -3471,9 +3496,9 @@ diff -ur libmagic.orig/softmagic.c libmagic/softmagic.c
break;
}
case FILE_USE:
diff -ur libmagic.orig/strcasestr.c libmagic/strcasestr.c
--- libmagic.orig/strcasestr.c 2021-02-23 01:49:12.000000000 +0100
+++ libmagic/strcasestr.c 2021-04-06 21:34:57.340978869 +0200
diff -u libmagic.orig/strcasestr.c libmagic/strcasestr.c
--- libmagic.orig/strcasestr.c 2021-02-23 00:49:12.000000000 +0000
+++ libmagic/strcasestr.c 2022-04-15 20:27:23.837624723 +0100
@@ -39,6 +39,8 @@

#include "file.h"
Expand All @@ -3483,7 +3508,3 @@ diff -ur libmagic.orig/strcasestr.c libmagic/strcasestr.c
#include <assert.h>
#include <ctype.h>
#include <string.h>
--- libmagic/config.h 2021-04-06 22:19:57.552120067 +0200
+++ /dev/null 2021-03-31 20:37:24.776503884 +0200
@@ -1 +0,0 @@
-#include "php.h"
6 changes: 2 additions & 4 deletions ext/fileinfo/libmagic/softmagic.c
Original file line number Diff line number Diff line change
Expand Up @@ -2203,22 +2203,20 @@ magiccheck(struct magic_set *ms, struct magic *m)
slen = MIN(m->vallen, sizeof(m->value.s));
l = 0;
v = 0;
#ifdef HAVE_MEMMEM
if (slen > 0 && m->str_flags == 0) {
const char *found;
idx = m->str_range + slen;
if (m->str_range == 0 || ms->search.s_len < idx)
idx = ms->search.s_len;
found = CAST(const char *, memmem(ms->search.s, idx,
m->value.s, slen));
found = CAST(const char *, php_memnstr(ms->search.s,
m->value.s, slen, ms->search.s + idx));
if (!found)
return 0;
idx = found - ms->search.s;
ms->search.offset += idx;
ms->search.rm_len = ms->search.s_len - idx;
break;
}
#endif

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