Skip to content

Commit 3c602fd

Browse files
committed
libmagic: Keep the WS limitation piece
Signed-off-by: Anatol Belski <ab@php.net>
1 parent 1b39d4c commit 3c602fd

File tree

2 files changed

+27
-8
lines changed

2 files changed

+27
-8
lines changed

ext/fileinfo/libmagic.patch

+22-5
Original file line numberDiff line numberDiff line change
@@ -2640,7 +2640,7 @@ diff -u libmagic.orig/magic.c libmagic/magic.c
26402640
}
26412641
return file_getbuffer(ms);
26422642
diff -u libmagic.orig/magic.h libmagic/magic.h
2643-
--- libmagic.orig/magic.h 2022-10-02 20:46:41.085566920 +0200
2643+
--- libmagic.orig/magic.h 2022-10-02 20:59:55.617810794 +0200
26442644
+++ libmagic/magic.h 2022-10-02 15:56:16.394142341 +0200
26452645
@@ -126,6 +126,7 @@
26462646

@@ -2829,7 +2829,7 @@ diff -u libmagic.orig/readcdf.c libmagic/readcdf.c
28292829
if (i != -1)
28302830
diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
28312831
--- libmagic.orig/softmagic.c 2022-09-13 20:46:07.000000000 +0200
2832-
+++ libmagic/softmagic.c 2022-10-02 15:56:16.394142341 +0200
2832+
+++ libmagic/softmagic.c 2022-10-02 20:58:58.073503436 +0200
28332833
@@ -43,7 +43,7 @@
28342834
#include <time.h>
28352835
#include "der.h"
@@ -3047,7 +3047,24 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
30473047
offset + o, mode, text, flip, indir_count, name_count,
30483048
printed_something, need_separator, returnval,
30493049
&nfound_match);
3050-
@@ -2036,29 +2044,8 @@
3050+
@@ -1992,11 +2000,13 @@
3051+
}
3052+
else if ((flags & STRING_COMPACT_WHITESPACE) &&
3053+
isspace(*a)) {
3054+
+ /* XXX Dirty. The data and the pattern is what is causing this.
3055+
+ Revert _i for the next port and see if it still matters. */
3056+
+ uint32_t _i = 0;
3057+
a++;
3058+
- if (isspace(*b)) {
3059+
- b++;
3060+
+ if (isspace(*b++)) {
3061+
if (!isspace(*a))
3062+
- while (b < eb && isspace(*b))
3063+
+ while (EXPECTED(_i++ < 2048) && b < eb && isspace(*b))
3064+
b++;
3065+
}
3066+
else {
3067+
@@ -2036,29 +2046,8 @@
30513068
return file_strncmp(a, b, len, maxlen, flags);
30523069
}
30533070

@@ -3078,7 +3095,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
30783095
{
30793096
uint64_t l = m->value.q;
30803097
uint64_t v;
3081-
@@ -2218,8 +2205,8 @@
3098+
@@ -2218,8 +2207,8 @@
30823099
idx = m->str_range + slen;
30833100
if (m->str_range == 0 || ms->search.s_len < idx)
30843101
idx = ms->search.s_len;
@@ -3089,7 +3106,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
30893106
if (!found) {
30903107
v = 1;
30913108
break;
3092-
@@ -2248,55 +2235,76 @@
3109+
@@ -2248,55 +2237,76 @@
30933110
break;
30943111
}
30953112
case FILE_REGEX: {

ext/fileinfo/libmagic/softmagic.c

+5-3
Original file line numberDiff line numberDiff line change
@@ -2000,11 +2000,13 @@ file_strncmp(const char *s1, const char *s2, size_t len, size_t maxlen,
20002000
}
20012001
else if ((flags & STRING_COMPACT_WHITESPACE) &&
20022002
isspace(*a)) {
2003+
/* XXX Dirty. The data and the pattern is what is causing this.
2004+
Revert _i for the next port and see if it still matters. */
2005+
uint32_t _i = 0;
20032006
a++;
2004-
if (isspace(*b)) {
2005-
b++;
2007+
if (isspace(*b++)) {
20062008
if (!isspace(*a))
2007-
while (b < eb && isspace(*b))
2009+
while (EXPECTED(_i++ < 2048) && b < eb && isspace(*b))
20082010
b++;
20092011
}
20102012
else {

0 commit comments

Comments
 (0)