diff options
author | Remi Collet <remi@remirepo.net> | 2023-09-04 13:30:55 +0200 |
---|---|---|
committer | Remi Collet <remi@php.net> | 2023-09-04 13:30:55 +0200 |
commit | f248ae8e4297fa01e13b12289d3d280f9a8e45c5 (patch) | |
tree | 2c2757e26ad2213934af7d76f0c2d172c3f709c4 /uwsgi_fix_php83.patch | |
parent | 842be679f665ec048b8e5337d804c7c5a4fb9669 (diff) |
add patch for PHP 8.3 from
https://github.com/unbit/uwsgi/pull/2559
Diffstat (limited to 'uwsgi_fix_php83.patch')
-rw-r--r-- | uwsgi_fix_php83.patch | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/uwsgi_fix_php83.patch b/uwsgi_fix_php83.patch new file mode 100644 index 0000000..156921b --- /dev/null +++ b/uwsgi_fix_php83.patch @@ -0,0 +1,60 @@ +From 15df465bcb3a2725209f7ac261c5eeacd90ad672 Mon Sep 17 00:00:00 2001 +From: Remi Collet <remi@remirepo.net> +Date: Mon, 4 Sep 2023 13:10:52 +0200 +Subject: [PATCH] ini_entries is read-only PHP 8.3 + +--- + plugins/php/php_plugin.c | 25 ++++++++++++++++++------- + 1 file changed, 18 insertions(+), 7 deletions(-) + +diff --git a/plugins/php/php_plugin.c b/plugins/php/php_plugin.c +index b3efa006a..e0ead46ab 100644 +--- a/plugins/php/php_plugin.c ++++ b/plugins/php/php_plugin.c +@@ -27,6 +27,7 @@ struct uwsgi_php { + char *fallback; + char *fallback2; + char *fallback_qs; ++ char *ini_entries; + size_t ini_size; + int dump_config; + char *server_software; +@@ -232,21 +233,31 @@ static sapi_module_struct uwsgi_sapi_module; + + void uwsgi_php_append_config(char *filename) { + size_t file_size = 0; +- char *file_content = uwsgi_open_and_read(filename, &file_size, 1, NULL); +- uwsgi_sapi_module.ini_entries = realloc(uwsgi_sapi_module.ini_entries, uphp.ini_size + file_size); +- memcpy(uwsgi_sapi_module.ini_entries + uphp.ini_size, file_content, file_size); ++ char *file_content = uwsgi_open_and_read(filename, &file_size, 1, NULL); ++ if (uphp.ini_size) { ++ uphp.ini_entries = realloc(uphp.ini_entries, uphp.ini_size + file_size); ++ } else { ++ uphp.ini_entries = malloc(file_size); ++ } ++ memcpy(uphp.ini_entries + uphp.ini_size, file_content, file_size); + uphp.ini_size += file_size-1; + free(file_content); ++ uwsgi_sapi_module.ini_entries = uphp.ini_entries; + } + + void uwsgi_php_set(char *opt) { + +- uwsgi_sapi_module.ini_entries = realloc(uwsgi_sapi_module.ini_entries, uphp.ini_size + strlen(opt)+2); +- memcpy(uwsgi_sapi_module.ini_entries + uphp.ini_size, opt, strlen(opt)); ++ if (uphp.ini_size) { ++ uphp.ini_entries = realloc(uphp.ini_entries, uphp.ini_size + strlen(opt)+2); ++ } else { ++ uphp.ini_entries = malloc(strlen(opt)+2); ++ } ++ memcpy(uphp.ini_entries + uphp.ini_size, opt, strlen(opt)); + + uphp.ini_size += strlen(opt)+1; +- uwsgi_sapi_module.ini_entries[uphp.ini_size-1] = '\n'; +- uwsgi_sapi_module.ini_entries[uphp.ini_size] = 0; ++ uphp.ini_entries[uphp.ini_size-1] = '\n'; ++ uphp.ini_entries[uphp.ini_size] = 0; ++ uwsgi_sapi_module.ini_entries = uphp.ini_entries; + } + + extern ps_module ps_mod_uwsgi; |