Skip to content

Commit b2e134f

Browse files
author
nono303
committed
https://github.com/php/php-src/issues/12762
1 parent ae5ab68 commit b2e134f

File tree

1 file changed

+298
-0
lines changed

1 file changed

+298
-0
lines changed

modules/php8.3_php-src.patch

+298
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,298 @@
1+
# https://github.com/php/php-src/issues/12762
2+
diff --git "a/Zend/zend_call_stack.c" "b/Zend/zend_call_stack.c"
3+
index 06ee521911..0ac230a0bd 100644
4+
--- "a/Zend/zend_call_stack.c"
5+
+++ "b/Zend/zend_call_stack.c"
6+
@@ -376,7 +376,19 @@ static bool zend_call_stack_get_win32(zend_call_stack *stack)
7+
* v Lower addresses v
8+
*/
9+
10+
- GetCurrentThreadStackLimits(&low_limit, &high_limit);
11+
+ typedef void (WINAPI* FuncT)(PULONG_PTR , PULONG_PTR);
12+
+ HINSTANCE hDLL = LoadLibrary("Kernel32.dll");
13+
+ FuncT GetCurrentThreadStackLimits = (FuncT) GetProcAddress((HMODULE)hDLL, "GetCurrentThreadStackLimits");
14+
+ if (GetCurrentThreadStackLimits) {
15+
+ GetCurrentThreadStackLimits(&low_limit, &high_limit);
16+
+ } else {
17+
+ NT_TIB* tib = (NT_TIB*)NtCurrentTeb();
18+
+ high_limit = (ULONG_PTR)tib->StackBase;
19+
+ MEMORY_BASIC_INFORMATION mbi;
20+
+ if (VirtualQuery(tib->StackLimit, &mbi, sizeof(mbi))) {
21+
+ low_limit = (ULONG_PTR)mbi.AllocationBase;
22+
+ }
23+
+ }
24+
25+
result_size = VirtualQuery((void*)low_limit,
26+
&uncommitted_region, sizeof(uncommitted_region));
27+
diff --git "a/main/network.c" "b/main/network.c"
28+
index 1ad7e370cc..9cc9de2a2c 100644
29+
--- "a/main/network.c"
30+
+++ "b/main/network.c"
31+
@@ -104,7 +104,7 @@ static const char *php_gai_strerror(int code)
32+
int code;
33+
const char *msg;
34+
} values[] = {
35+
-# ifdef EAI_ADDRFAMILY
36+
+# ifdef EAI_ADDRFAMILY /* Not available in MSVC */
37+
{EAI_ADDRFAMILY, "Address family for hostname not supported"},
38+
# endif
39+
{EAI_AGAIN, "Temporary failure in name resolution"},
40+
@@ -112,13 +112,15 @@ static const char *php_gai_strerror(int code)
41+
{EAI_FAIL, "Non-recoverable failure in name resolution"},
42+
{EAI_FAMILY, "ai_family not supported"},
43+
{EAI_MEMORY, "Memory allocation failure"},
44+
-# ifdef EAI_NODATA
45+
+# ifdef EAI_NODATA /* Not available in MSVC */
46+
{EAI_NODATA, "No address associated with hostname"},
47+
# endif
48+
{EAI_NONAME, "Name or service not known"},
49+
{EAI_SERVICE, "Servname not supported for ai_socktype"},
50+
{EAI_SOCKTYPE, "ai_socktype not supported"},
51+
+# ifdef EAI_SYSTEM /* Not available in MSVC */
52+
{EAI_SYSTEM, "System error"},
53+
+# endif
54+
{0, NULL}
55+
};
56+
int i;
57+
diff --git "a/ext/iconv/iconv.c" "b/ext/iconv/iconv.c"
58+
index 9d7905c9a9..36dabfdc69 100644
59+
--- "a/ext/iconv/iconv.c"
60+
+++ "b/ext/iconv/iconv.c"
61+
@@ -69,7 +69,7 @@ char *get_iconv_version(void) {
62+
63+
#ifdef HAVE_LIBICONV
64+
static char buf[16];
65+
- snprintf(buf, sizeof(buf), "%d.%d", _libiconv_version >> 8, _libiconv_version & 0xff);
66+
+ snprintf(buf, sizeof(buf), "%d.%d", _LIBICONV_VERSION >> 8, _LIBICONV_VERSION & 0xff);
67+
version = buf;
68+
#elif HAVE_GLIBC_ICONV
69+
version = (char *) gnu_get_libc_version();
70+
71+
diff --git "a/ext/phar/config.w32" "b/ext/phar/config.w32"
72+
index c68ba08f2c..241f3eeddb 100644
73+
--- "a/ext/phar/config.w32"
74+
+++ "b/ext/phar/config.w32"
75+
@@ -13,10 +13,10 @@ if (PHP_PHAR != "no") {
76+
ADD_FLAG("CFLAGS_PHAR", "/D COMPILE_DL_PHAR ");
77+
}
78+
if (PHP_PHAR_NATIVE_SSL != "no") {
79+
- if (CHECK_LIB("libeay32st.lib", "phar")) {
80+
+ if (CHECK_LIB("libcrypto.lib", "phar")) {
81+
/* We don't really need GDI for this, but there's no
82+
way to avoid linking it in the static openssl build */
83+
- ADD_FLAG("LIBS_PHAR", "libeay32st.lib gdi32.lib");
84+
+ ADD_FLAG("LIBS_PHAR", "libcrypto.lib gdi32.lib");
85+
if (PHP_DEBUG == "no") {
86+
/* Silence irrelevant-to-us warning in release builds */
87+
ADD_FLAG("LDFLAGS_PHAR", "/IGNORE:4089 ");
88+
diff --git "a/ext/gmp/gmp.c" "b/ext/gmp/gmp.c"
89+
index 29974c6386..28d304e072 100644
90+
--- "a/ext/gmp/gmp.c"
91+
+++ "b/ext/gmp/gmp.c"
92+
@@ -36,10 +36,10 @@
93+
#define GMP_ROUND_PLUSINF 1
94+
#define GMP_ROUND_MINUSINF 2
95+
96+
-#ifdef mpir_version
97+
-#define GMP_MPIR_VERSION_STRING ((char *) mpir_version)
98+
+#ifdef _MSC_MPIR_VERSION
99+
+#define GMP_MPIR_VERSION_STRING ((char *) _MSC_MPIR_VERSION)
100+
#endif
101+
-#define GMP_VERSION_STRING ((char *) gmp_version)
102+
+#define GMP_VERSION_STRING ((char *) GMP_VERSION)
103+
104+
#define GMP_MSW_FIRST (1 << 0)
105+
#define GMP_LSW_FIRST (1 << 1)
106+
@@ -568,10 +568,10 @@ ZEND_MODULE_INFO_D(gmp)
107+
{
108+
php_info_print_table_start();
109+
php_info_print_table_row(2, "gmp support", "enabled");
110+
-#ifdef mpir_version
111+
- php_info_print_table_row(2, "MPIR version", mpir_version);
112+
+#ifdef _MSC_MPIR_VERSION
113+
+ php_info_print_table_row(2, "MPIR version", _MSC_MPIR_VERSION);
114+
#else
115+
- php_info_print_table_row(2, "GMP version", gmp_version);
116+
+ php_info_print_table_row(2, "GMP version", GMP_VERSION);
117+
#endif
118+
php_info_print_table_end();
119+
}
120+
diff --git "a/ext/libxml/config.w32" "b/ext/libxml/config.w32"
121+
index b11c57bc44..7f15920f29 100644
122+
--- "a/ext/libxml/config.w32"
123+
+++ "b/ext/libxml/config.w32"
124+
@@ -3,8 +3,10 @@
125+
ARG_WITH("libxml", "LibXML support", "yes");
126+
127+
if (PHP_LIBXML == "yes") {
128+
- if (CHECK_LIB("libxml2_a_dll.lib;libxml2_a.lib", "libxml") &&
129+
- CHECK_LIB("libiconv_a.lib;iconv_a.lib;libiconv.lib;iconv.lib", "libxml") &&
130+
+ if (CHECK_LIB("libxml2_a_dll.lib", "libxml") &&
131+
+ CHECK_LIB("libiconv.lib", "libxml") &&
132+
+ CHECK_LIB("liblzma.lib", "libxml") &&
133+
+ CHECK_LIB("icuuc.lib", "libxml") &&
134+
CHECK_HEADER_ADD_INCLUDE("libxml/parser.h", "CFLAGS_LIBXML", PHP_PHP_BUILD + "\\include\\libxml2") &&
135+
CHECK_HEADER_ADD_INCLUDE("libxml/tree.h", "CFLAGS_LIBXML", PHP_PHP_BUILD + "\\include\\libxml2") &&
136+
ADD_EXTENSION_DEP('libxml', 'iconv')) {
137+
diff --git "a/ext/gd/config.w32" "b/ext/gd/config.w32"
138+
index 09b09df95d..1424cf6671 100644
139+
--- "a/ext/gd/config.w32"
140+
+++ "b/ext/gd/config.w32"
141+
@@ -1,81 +1,46 @@
142+
// vim:ft=javascript
143+
144+
-ARG_WITH("gd", "Bundled GD support", "yes,shared");
145+
-ARG_WITH("libwebp", "webp support", "yes");
146+
-ARG_WITH("libavif", "avif support", "yes");
147+
+ARG_WITH("gd", "GD support", "yes,shared");
148+
149+
if (PHP_GD != "no") {
150+
if (
151+
- CHECK_LIB("libjpeg_a.lib;libjpeg.lib", "gd", PHP_GD) &&
152+
- CHECK_LIB("freetype_a.lib;freetype.lib", "gd", PHP_GD) &&
153+
- CHECK_HEADER_ADD_INCLUDE("ft2build.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include\\freetype2;" + PHP_PHP_BUILD + "\\include\\freetype") &&
154+
- CHECK_LIB("libpng_a.lib;libpng.lib", "gd", PHP_GD) &&
155+
- CHECK_HEADER_ADD_INCLUDE("gd.h", "CFLAGS_GD", PHP_GD + ";ext\\gd\\libgd") &&
156+
- (CHECK_HEADER_ADD_INCLUDE("png.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include\\libpng16") ||
157+
- CHECK_HEADER_ADD_INCLUDE("png.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include\\libpng15") ||
158+
- CHECK_HEADER_ADD_INCLUDE("png.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include\\libpng12")) &&
159+
- (CHECK_LIB("libiconv_a.lib;libiconv.lib", "gd", PHP_GD) || CHECK_LIB("iconv_a.lib;iconv.lib", "gd", PHP_GD)) &&
160+
- CHECK_HEADER_ADD_INCLUDE("iconv.h", "CFLAGS_GD", PHP_GD) &&
161+
- (((PHP_ZLIB=="no") && (CHECK_LIB("zlib_a.lib;zlib.lib", "gd", PHP_GD) )) ||
162+
- (PHP_ZLIB_SHARED && CHECK_LIB("zlib.lib", "gd", PHP_GD)) || (PHP_ZLIB == "yes" && (!PHP_ZLIB_SHARED))) &&
163+
- CHECK_LIB("libXpm_a.lib", "gd", PHP_GD) &&
164+
- CHECK_HEADER_ADD_INCLUDE("xpm.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include\\X11")
165+
- ) {
166+
-
167+
- if (PHP_LIBWEBP != "no") {
168+
- if ((CHECK_LIB("libwebp_a.lib", "gd", PHP_GD) || CHECK_LIB("libwebp.lib", "gd", PHP_GD)) &&
169+
- CHECK_HEADER_ADD_INCLUDE("decode.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include\\webp") &&
170+
- CHECK_HEADER_ADD_INCLUDE("encode.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include\\webp")) {
171+
- AC_DEFINE("HAVE_LIBWEBP", 1, "WebP support");
172+
- AC_DEFINE("HAVE_GD_WEBP", 1, "WebP support");
173+
- } else {
174+
- WARNING("libwebp not enabled; libraries and headers not found");
175+
- }
176+
- }
177+
- if (PHP_LIBAVIF != "no") {
178+
- if (CHECK_LIB("avif_a.lib", "gd", PHP_GD) &&
179+
- CHECK_LIB("aom_a.lib", "gd", PHP_GD) &&
180+
- CHECK_HEADER_ADD_INCLUDE("avif.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include\\avif")) {
181+
- ADD_FLAG("CFLAGS_GD", "/D HAVE_LIBAVIF /D HAVE_GD_AVIF");
182+
- } else if (CHECK_LIB("avif.lib", "gd", PHP_GD) &&
183+
- CHECK_HEADER_ADD_INCLUDE("avif.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include\\avif")) {
184+
- ADD_FLAG("CFLAGS_GD", "/D HAVE_LIBAVIF /D HAVE_GD_AVIF");
185+
- } else {
186+
- WARNING("libavif not enabled; libraries and headers not found");
187+
- }
188+
- }
189+
- CHECK_LIB("User32.lib", "gd", PHP_GD);
190+
- CHECK_LIB("Gdi32.lib", "gd", PHP_GD);
191+
+ CHECK_HEADER_ADD_INCLUDE("gd.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include") &&
192+
+ CHECK_HEADER_ADD_INCLUDE("gdfontg.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include") &&
193+
+ CHECK_HEADER_ADD_INCLUDE("gdfontl.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include") &&
194+
+ CHECK_HEADER_ADD_INCLUDE("gdfontmb.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include") &&
195+
+ CHECK_HEADER_ADD_INCLUDE("gdfonts.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include") &&
196+
+ CHECK_HEADER_ADD_INCLUDE("gdfontt.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include") &&
197+
+ CHECK_HEADER_ADD_INCLUDE("gd_errors.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include") &&
198+
199+
+ CHECK_LIB("user32.lib", "gd", PHP_GD) &&
200+
+ CHECK_LIB("Gdi32.Lib", "gd", PHP_GD) &&
201+
+ CHECK_LIB("libgd.lib", "gd", PHP_GD)
202+
+ ) {
203+
EXTENSION("gd", "gd.c", null, "-Iext/gd/libgd");
204+
- ADD_SOURCES("ext/gd/libgd", "gd2copypal.c gd.c \
205+
- gdcache.c gdfontg.c gdfontl.c gdfontmb.c gdfonts.c gdfontt.c \
206+
- gdft.c gd_gd2.c gd_gd.c gd_gif_in.c gd_gif_out.c gdhelpers.c gd_io.c gd_io_dp.c \
207+
- gd_io_file.c gd_io_ss.c gd_jpeg.c gdkanji.c gd_png.c gd_ss.c \
208+
- gdtables.c gd_topal.c gd_wbmp.c gdxpm.c wbmp.c gd_xbm.c gd_security.c gd_transform.c \
209+
- gd_filter.c gd_pixelate.c gd_rotate.c gd_color_match.c gd_webp.c gd_avif.c \
210+
- gd_crop.c gd_interpolation.c gd_matrix.c gd_bmp.c gd_tga.c", "gd");
211+
- AC_DEFINE('HAVE_LIBGD', 1, 'GD support');
212+
- AC_DEFINE('HAVE_GD_BUNDLED', 1, "Bundled GD");
213+
- AC_DEFINE('HAVE_GD_PNG', 1, "PNG support");
214+
- AC_DEFINE('HAVE_GD_BMP', 1, "BMP support");
215+
- AC_DEFINE('HAVE_GD_TGA', 1, "TGA support");
216+
- AC_DEFINE('HAVE_LIBPNG', 1, "PNG support");
217+
- AC_DEFINE('HAVE_LIBJPEG', 1, "JPEG support");
218+
- AC_DEFINE('HAVE_GD_JPG', 1, "JPEG support");
219+
- AC_DEFINE('HAVE_XPM', 1, "XPM support");
220+
- AC_DEFINE('HAVE_GD_XPM', 1, "XPM support");
221+
- AC_DEFINE('HAVE_LIBFREETYPE', 1, "Freetype support");
222+
- AC_DEFINE('HAVE_GD_FREETYPE', 1, "Freetype support");
223+
- ADD_FLAG("CFLAGS_GD", " \
224+
-/D PHP_GD_EXPORTS=1 \
225+
-/D HAVE_GD_GET_INTERPOLATION \
226+
- ");
227+
+
228+
+ AC_DEFINE('HAVE_LIBGD', 1, "GD support");
229+
+ AC_DEFINE('PHP_GD_EXPORTS', 1, "dllexport");
230+
+ AC_DEFINE('HAVE_GD_PNG', 1, "PNG support");
231+
+ AC_DEFINE('HAVE_GD_AVIF', 1, "AVIF support");
232+
+ AC_DEFINE('HAVE_GD_WEBP', 1, "WEBP support");
233+
+ AC_DEFINE('HAVE_GD_JPG', 1, "JPG support");
234+
+ AC_DEFINE('HAVE_GD_XPM', 1, "XPM support");
235+
+ AC_DEFINE('HAVE_GD_BMP', 1, "BMP support");
236+
+ AC_DEFINE('HAVE_GD_TGA', 1, "TGA support");
237+
+ AC_DEFINE('HAVE_GD_FREETYPE', 1, "FREETYPE support");
238+
+ AC_DEFINE('HAVE_GD_LIBVERSION', 1, "VERSION support");
239+
+ AC_DEFINE('HAVE_GD_GET_INTERPOLATION', 1, "INTERPOLATION support");
240+
+
241+
+ AC_DEFINE('HAVE_GD_HEIF', 1, "HEIF support");
242+
+ AC_DEFINE('HAVE_GD_ZLIB', 1, "ZLIB support");
243+
+ AC_DEFINE('HAVE_GD_TIFF', 1, "TIFF support");
244+
+ AC_DEFINE("HAVE_GD_ICONV", 1, "ICONV support");
245+
+
246+
if (ICC_TOOLSET) {
247+
ADD_FLAG("LDFLAGS_GD", "/nodefaultlib:libcmt");
248+
}
249+
250+
- PHP_INSTALL_HEADERS("", "ext/gd ext/gd/libgd" );
251+
+ PHP_INSTALL_HEADERS("", "ext/gd" );
252+
} else {
253+
WARNING("gd not enabled; libraries and headers not found");
254+
}
255+
diff --git "a/ext/gd/gd.c" "b/ext/gd/gd.c"
256+
index 1d8b3a0a1d..a84349217a 100644
257+
--- "a/ext/gd/gd.c"
258+
+++ "b/ext/gd/gd.c"
259+
@@ -101,7 +101,19 @@ static void php_imagettftext_common(INTERNAL_FUNCTION_PARAMETERS, int);
260+
261+
/* as it is not really public, duplicate declaration here to avoid
262+
pointless warnings */
263+
-int overflow2(int a, int b);
264+
+int overflow2(int a, int b)
265+
+{
266+
+
267+
+ if(a <= 0 || b <= 0) {
268+
+ php_error_docref(NULL, E_WARNING, "One parameter to a memory allocation multiplication is negative or zero, failing operation gracefully\n");
269+
+ return 1;
270+
+ }
271+
+ if(a > INT_MAX / b) {
272+
+ php_error_docref(NULL, E_WARNING, "Product of memory allocation multiplication would exceed INT_MAX, failing operation gracefully\n");
273+
+ return 1;
274+
+ }
275+
+ return 0;
276+
+}
277+
278+
static void php_image_filter_negate(INTERNAL_FUNCTION_PARAMETERS);
279+
static void php_image_filter_grayscale(INTERNAL_FUNCTION_PARAMETERS);
280+
@@ -458,6 +470,18 @@ PHP_MINFO_FUNCTION(gd)
281+
#endif
282+
#ifdef HAVE_GD_TGA
283+
php_info_print_table_row(2, "TGA Read Support", "enabled");
284+
+#endif
285+
+#ifdef HAVE_GD_ZLIB
286+
+ php_info_print_table_row(2, "ZLIB Support", "enabled - not implemented");
287+
+#endif
288+
+#ifdef HAVE_GD_TIFF
289+
+ php_info_print_table_row(2, "TIFF Support", "enabled - not implemented");
290+
+#endif
291+
+#ifdef HAVE_GD_HEIF
292+
+ php_info_print_table_row(2, "HEIF Support", "enabled - not implemented");
293+
+#endif
294+
+#ifdef HAVE_GD_ICONV
295+
+ php_info_print_table_row(2, "ICONV Support", "enabled - not implemented");
296+
#endif
297+
php_info_print_table_end();
298+
DISPLAY_INI_ENTRIES();

0 commit comments

Comments
 (0)