Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package php8 for openSUSE:Factory checked in at 2024-04-05 20:24:37 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/php8 (Old) and /work/SRC/openSUSE:Factory/.php8.new.1905 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "php8" Fri Apr 5 20:24:37 2024 rev:65 rq:1165539 version:8.3.4 Changes: -------- --- /work/SRC/openSUSE:Factory/php8/php8.changes 2024-03-20 21:09:59.528351884 +0100 +++ /work/SRC/openSUSE:Factory/.php8.new.1905/php8.changes 2024-04-05 20:24:56.400213711 +0200 @@ -2 +2 @@ -Tue Mar 19 06:04:43 UTC 2024 - pgaj...@suse.com +Tue Mar 19 06:17:22 UTC 2024 - pgaj...@suse.com @@ -4 +4 @@ -- version update to 8.2.17 +- version update to 8.3.4 @@ -8 +8 @@ -Wed Mar 6 09:57:38 UTC 2024 - Pedro Monreal <pmonr...@suse.com> +Wed Mar 6 19:39:24 UTC 2024 - Pedro Monreal <pmonr...@suse.com> @@ -15 +15 @@ -Fri Feb 16 07:57:56 UTC 2024 - pgaj...@suse.com +Fri Feb 16 07:20:02 UTC 2024 - pgaj...@suse.com @@ -17,2 +17,2 @@ -- version update to 8.2.16 - * This is a bug fix release. +- version update to 8.3.3 + * A bugfix release. @@ -23 +23 @@ -Thu Jan 18 18:01:47 UTC 2024 - pgaj...@suse.com +Thu Jan 18 18:06:25 UTC 2024 - pgaj...@suse.com @@ -25 +25 @@ -- version update to 8.2.15 +- version update to 8.3.2 @@ -32 +32 @@ -Tue Jan 2 11:40:49 UTC 2024 - pgaj...@suse.com +Wed Dec 27 17:54:25 UTC 2023 - Manu Maier <mman...@outlook.de> @@ -34 +34 @@ -- version update to 8.2.14 +- version update to 8.3.1 @@ -36 +36,51 @@ - https://www.php.net/ChangeLog-8.php#8.2.14 + https://www.php.net/ChangeLog-8.php#8.3.1 + +------------------------------------------------------------------- +Fri Nov 24 11:04:42 UTC 2023 - pgaj...@suse.com + +- version update to 8.3.0 + * https://www.php.net/releases/8.3/en.php + * Typed class constants + * Dynamic class constant fetch + * New #[\Override] attribute + * Deep-cloning of readonly properties + * New json_validate() function + * New Randomizer::getBytesFromString() method + * New Randomizer::getFloat() and Randomizer::nextFloat() methods + * New DOMElement::getAttributeNames(), + DOMElement::insertAdjacentElement(), + DOMElement::insertAdjacentText(), + DOMElement::toggleAttribute(), + DOMNode::contains(), DOMNode::getRootNode(), + DOMNode::isEqualNode(), DOMNameSpaceNode::contains(), and + DOMParentNode::replaceChildren() methods. + * New IntlCalendar::setDate(), + IntlCalendar::setDateTime(), + IntlGregorianCalendar::createFromDate(), and + IntlGregorianCalendar::createFromDateTime() methods. + * New ldap_connect_wallet(), and ldap_exop_sync() functions. + * New mb_str_pad() function. + * New posix_sysconf(), posix_pathconf(), posix_fpathconf(), + and posix_eaccess() functions. + * New ReflectionMethod::createFromMethodName() method. + * New socket_atmark() function. + * New str_increment(), str_decrement(), + and stream_context_set_options() functions. + * New ZipArchive::getArchiveFlag() method. + * Support for generation EC keys with custom EC parameters in + OpenSSL extension. + * New INI setting zend.max_allowed_stack_size to set the maximum + allowed stack size. + * php.ini now supports fallback/default value syntax. + * Anonymous classes can now be readonly. + * https://www.php.net/ChangeLog-8.php#PHP_8_3 +- modified patches + % php-ar-flags.patch (refreshed) + % php-build-reproducible-phar.patch (refreshed) + % php-ini.patch (refreshed) +- modified sources + % php8.keyring +- deleted patches + - php-systzdata-v23.patch +- added patches + + php-systzdata-v24.patch Old: ---- php-8.2.17.tar.xz php-8.2.17.tar.xz.asc php-systzdata-v23.patch New: ---- php-8.3.4.tar.xz php-8.3.4.tar.xz.asc php-systzdata-v24.patch BETA DEBUG BEGIN: Old:- deleted patches - php-systzdata-v23.patch - added patches BETA DEBUG END: BETA DEBUG BEGIN: New:- added patches + php-systzdata-v24.patch BETA DEBUG END: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ php8.spec ++++++ --- /var/tmp/diff_new_pack.w9xYmm/_old 2024-04-05 20:24:57.560256373 +0200 +++ /var/tmp/diff_new_pack.w9xYmm/_new 2024-04-05 20:24:57.560256373 +0200 @@ -1,7 +1,7 @@ # -# spec file for package php8 +# spec file # -# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -40,8 +40,8 @@ %define psuffix %{nil} %endif -%global apiver 20220829 -%global zendver 20220829 +%global apiver 20230831 +%global zendver 20230831 %define extension_dir %{_libdir}/%{php_name}/extensions %define php_sysconf %{_sysconfdir}/%{php_name} @@ -57,7 +57,7 @@ %bcond_without sodium Name: %{pprefix}%{php_name}%{psuffix} -Version: 8.2.17 +Version: 8.3.4 Release: 0 Summary: Interpreter for the PHP scripting language version 8 License: MIT AND PHP-3.01 @@ -85,7 +85,8 @@ # SUSE specific ini defaults Patch3: php-ini.patch # use of the system timezone database -Patch4: php-systzdata-v23.patch +# https://git.remirepo.net/cgit/rpms/scl-php83/php.git/plain/php-8.3.0-systzdata-v24.patch +Patch4: php-systzdata-v24.patch # adjust upstream systemd unit to SUSE needs Patch5: php-systemd-unit.patch # PATCH-FEATURE-OPENSUSE use ordered input files for reproducible /usr/bin/phar.phar @@ -279,7 +280,7 @@ Requires: apache2-prefork Requires: php = %{version} Requires(post): %{_sbindir}/a2enmod -Requires(preun): %{_sbindir}/a2enmod +Requires(preun):%{_sbindir}/a2enmod Provides: mod_php_any = %{version} Provides: php-sapi = %{version} Obsoletes: mod_php_any < %{version} ++++++ php-8.2.17.tar.xz -> php-8.3.4.tar.xz ++++++ /work/SRC/openSUSE:Factory/php8/php-8.2.17.tar.xz /work/SRC/openSUSE:Factory/.php8.new.1905/php-8.3.4.tar.xz differ: char 13, line 1 ++++++ php-ar-flags.patch ++++++ --- /var/tmp/diff_new_pack.w9xYmm/_old 2024-04-05 20:24:57.652259757 +0200 +++ /var/tmp/diff_new_pack.w9xYmm/_new 2024-04-05 20:24:57.656259903 +0200 @@ -1,8 +1,8 @@ -Index: php-8.2.15/configure.ac +Index: php-8.3.2/configure.ac =================================================================== ---- php-8.2.15.orig/configure.ac -+++ php-8.2.15/configure.ac -@@ -1618,7 +1618,7 @@ PHP_CONFIGURE_PART(Configuring libtool) +--- php-8.3.2.orig/configure.ac ++++ php-8.3.2/configure.ac +@@ -1657,7 +1657,7 @@ PHP_CONFIGURE_PART(Configuring libtool) dnl Silence warning: `ar: 'u' modifier ignored since 'D' is the default` dnl See https://github.com/php/php-src/pull/3017 ++++++ php-build-reproducible-phar.patch ++++++ --- /var/tmp/diff_new_pack.w9xYmm/_old 2024-04-05 20:24:57.668260345 +0200 +++ /var/tmp/diff_new_pack.w9xYmm/_new 2024-04-05 20:24:57.672260492 +0200 @@ -16,11 +16,11 @@ ext/phar/zip.c | 2 +- 6 files changed, 18 insertions(+), 5 deletions(-) -Index: php-8.2.16/ext/phar/phar.c +Index: php-8.3.3/ext/phar/phar.c =================================================================== ---- php-8.2.16.orig/ext/phar/phar.c -+++ php-8.2.16/ext/phar/phar.c -@@ -2999,7 +2999,7 @@ int phar_flush(phar_archive_data *phar, +--- php-8.3.3.orig/ext/phar/phar.c ++++ php-8.3.3/ext/phar/phar.c +@@ -2993,7 +2993,7 @@ int phar_flush(phar_archive_data *phar, 4: metadata-len +: metadata */ @@ -29,10 +29,10 @@ phar_set_32(entry_buffer, entry->uncompressed_filesize); phar_set_32(entry_buffer+4, mytime); phar_set_32(entry_buffer+8, entry->compressed_filesize); -Index: php-8.2.16/ext/phar/phar_internal.h +Index: php-8.3.3/ext/phar/phar_internal.h =================================================================== ---- php-8.2.16.orig/ext/phar/phar_internal.h -+++ php-8.2.16/ext/phar/phar_internal.h +--- php-8.3.3.orig/ext/phar/phar_internal.h ++++ php-8.3.3/ext/phar/phar_internal.h @@ -427,6 +427,21 @@ static inline enum phar_fp_type phar_get return PHAR_G(cached_fp)[entry->phar->phar_pos].manifest[entry->manifest_pos].fp_type; } @@ -55,10 +55,10 @@ static inline zend_off_t phar_get_fp_offset(phar_entry_info *entry) { if (!entry->is_persistent) { -Index: php-8.2.16/ext/phar/stream.c +Index: php-8.3.3/ext/phar/stream.c =================================================================== ---- php-8.2.16.orig/ext/phar/stream.c -+++ php-8.2.16/ext/phar/stream.c +--- php-8.3.3.orig/ext/phar/stream.c ++++ php-8.3.3/ext/phar/stream.c @@ -474,7 +474,7 @@ static int phar_stream_flush(php_stream phar_entry_data *data = (phar_entry_data *) stream->abstract; @@ -68,11 +68,11 @@ ret = phar_flush(data->phar, 0, 0, 0, &error); if (error) { php_stream_wrapper_log_error(stream->wrapper, REPORT_ERRORS, "%s", error); -Index: php-8.2.16/ext/phar/tar.c +Index: php-8.3.3/ext/phar/tar.c =================================================================== ---- php-8.2.16.orig/ext/phar/tar.c -+++ php-8.2.16/ext/phar/tar.c -@@ -972,7 +972,7 @@ int phar_tar_flush(phar_archive_data *ph +--- php-8.3.3.orig/ext/phar/tar.c ++++ php-8.3.3/ext/phar/tar.c +@@ -965,7 +965,7 @@ int phar_tar_flush(phar_archive_data *ph char halt_stub[] = "__HALT_COMPILER();"; entry.flags = PHAR_ENT_PERM_DEF_FILE; @@ -81,11 +81,11 @@ entry.is_modified = 1; entry.is_crc_checked = 1; entry.is_tar = 1; -Index: php-8.2.16/ext/phar/util.c +Index: php-8.3.3/ext/phar/util.c =================================================================== ---- php-8.2.16.orig/ext/phar/util.c -+++ php-8.2.16/ext/phar/util.c -@@ -574,7 +574,7 @@ phar_entry_data *phar_get_or_create_entr +--- php-8.3.3.orig/ext/phar/util.c ++++ php-8.3.3/ext/phar/util.c +@@ -584,7 +584,7 @@ phar_entry_data *phar_get_or_create_entr phar_add_virtual_dirs(phar, path, path_len); etemp.is_modified = 1; @@ -94,11 +94,11 @@ etemp.is_crc_checked = 1; etemp.phar = phar; etemp.filename = estrndup(path, path_len); -Index: php-8.2.16/ext/phar/zip.c +Index: php-8.3.3/ext/phar/zip.c =================================================================== ---- php-8.2.16.orig/ext/phar/zip.c -+++ php-8.2.16/ext/phar/zip.c -@@ -1237,7 +1237,7 @@ int phar_zip_flush(phar_archive_data *ph +--- php-8.3.3.orig/ext/phar/zip.c ++++ php-8.3.3/ext/phar/zip.c +@@ -1236,7 +1236,7 @@ int phar_zip_flush(phar_archive_data *ph pass.error = &temperr; entry.flags = PHAR_ENT_PERM_DEF_FILE; ++++++ php-ini.patch ++++++ --- /var/tmp/diff_new_pack.w9xYmm/_old 2024-04-05 20:24:57.692261228 +0200 +++ /var/tmp/diff_new_pack.w9xYmm/_new 2024-04-05 20:24:57.696261375 +0200 @@ -1,8 +1,8 @@ -Index: php-8.2.7/php.ini-production +Index: php-8.3.0/php.ini-production =================================================================== ---- php-8.2.7.orig/php.ini-production -+++ php-8.2.7/php.ini-production -@@ -742,7 +742,7 @@ default_charset = "UTF-8" +--- php-8.3.0.orig/php.ini-production ++++ php-8.3.0/php.ini-production +@@ -752,7 +752,7 @@ default_charset = "UTF-8" ;;;;;;;;;;;;;;;;;;;;;;;;; ; UNIX: "/path1:/path2" @@ -11,7 +11,7 @@ ; ; Windows: "\path1;\path2" ;include_path = ".;c:\php\includes" -@@ -976,7 +976,7 @@ cli_server.color = On +@@ -986,7 +986,7 @@ cli_server.color = On [Date] ; Defines the default timezone used by the date functions ; https://php.net/date.timezone @@ -20,7 +20,7 @@ ; https://php.net/date.default-latitude ;date.default_latitude = 31.7667 -@@ -1169,7 +1169,7 @@ mysqli.max_persistent = -1 +@@ -1179,7 +1179,7 @@ mysqli.max_persistent = -1 ; Allow or prevent persistent links. ; https://php.net/mysqli.allow-persistent @@ -29,10 +29,10 @@ ; Maximum number of links. -1 means no limit. ; https://php.net/mysqli.max-links -Index: php-8.2.7/sapi/fpm/www.conf.in +Index: php-8.3.0/sapi/fpm/www.conf.in =================================================================== ---- php-8.2.7.orig/sapi/fpm/www.conf.in -+++ php-8.2.7/sapi/fpm/www.conf.in +--- php-8.3.0.orig/sapi/fpm/www.conf.in ++++ php-8.3.0/sapi/fpm/www.conf.in @@ -27,6 +27,8 @@ ; If the group is not set, the user's group is used. user = @php_fpm_user@ ++++++ php-systzdata-v23.patch -> php-systzdata-v24.patch ++++++ --- /work/SRC/openSUSE:Factory/php8/php-systzdata-v23.patch 2023-06-23 21:52:20.118529693 +0200 +++ /work/SRC/openSUSE:Factory/.php8.new.1905/php-systzdata-v24.patch 2024-04-05 20:24:56.348211798 +0200 @@ -5,6 +5,7 @@ than embedding a copy. Discussed upstream but was not desired. History: +f24: add internal UTC if tzdata is missing r23: fix possible buffer overflow r22: retrieve tzdata version from /usr/share/zoneinfo/tzdata.zi r21: adapt for timelib 2021.03 (in 8.1.0) @@ -34,10 +35,11 @@ r2: add filesystem trawl to set up name alias index r1: initial revision -Index: php-8.2.7/ext/date/config0.m4 -=================================================================== ---- php-8.2.7.orig/ext/date/config0.m4 -+++ php-8.2.7/ext/date/config0.m4 + +diff --git a/ext/date/config0.m4 b/ext/date/config0.m4 +index 6b803bf33e..53c3cdb3f4 100644 +--- a/ext/date/config0.m4 ++++ b/ext/date/config0.m4 @@ -4,6 +4,19 @@ AC_CHECK_HEADERS([io.h]) dnl Check for strtoll, atoll AC_CHECK_FUNCS(strtoll atoll) @@ -58,11 +60,11 @@ PHP_DATE_CFLAGS="-Wno-implicit-fallthrough -I@ext_builddir@/lib -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -DHAVE_TIMELIB_CONFIG_H=1" timelib_sources="lib/astro.c lib/dow.c lib/parse_date.c lib/parse_tz.c lib/parse_posix.c lib/timelib.c lib/tm2unixtime.c lib/unixtime2tm.c lib/parse_iso_intervals.c lib/interval.c" -Index: php-8.2.7/ext/date/lib/parse_tz.c -=================================================================== ---- php-8.2.7.orig/ext/date/lib/parse_tz.c -+++ php-8.2.7/ext/date/lib/parse_tz.c -@@ -26,9 +26,22 @@ +diff --git a/ext/date/lib/parse_tz.c b/ext/date/lib/parse_tz.c +index c7f93580d7..ec196a98b6 100644 +--- a/ext/date/lib/parse_tz.c ++++ b/ext/date/lib/parse_tz.c +@@ -26,9 +26,33 @@ #include "timelib.h" #include "timelib_private.h" @@ -75,6 +77,17 @@ + +#include "php_scandir.h" + ++static const unsigned char internal_utc[] = { ++ 0x54, 0x5a, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x55, 0x54, 0x43, 0x00, 0x54, 0x5a, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, ++ 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x54, 0x43, 0x00, 0x0a, 0x55, 0x54, 0x43, ++ 0x30, 0x0a ++}; ++ +#else #define TIMELIB_SUPPORTS_V2DATA #define TIMELIB_SUPPORT_SLIM_FILE @@ -85,7 +98,7 @@ #if (defined(__APPLE__) || defined(__APPLE_CC__)) && (defined(__BIG_ENDIAN__) || defined(__LITTLE_ENDIAN__)) # if defined(__LITTLE_ENDIAN__) -@@ -95,6 +108,11 @@ static int read_php_preamble(const unsig +@@ -95,6 +119,11 @@ static int read_php_preamble(const unsigned char **tzf, timelib_tzinfo *tz) { uint32_t version; @@ -97,7 +110,7 @@ /* read ID */ version = (*tzf)[3] - '0'; *tzf += 4; -@@ -577,7 +595,467 @@ void timelib_dump_tzinfo(timelib_tzinfo +@@ -577,7 +606,475 @@ void timelib_dump_tzinfo(timelib_tzinfo *tz) } } @@ -165,7 +178,7 @@ + + /* Annoying encoding used by zone.tab has no decimal point, so use + * the length to determine the format: -+ * ++ * + * 4 = DDMM + * 5 = DDDMM + * 6 = DDMMSS @@ -232,10 +245,10 @@ + + if (*p == '#' || *p == '\0' || *p == '\n') + continue; -+ ++ + if (!isalpha(p[0]) || !isalpha(p[1]) || p[2] != '\t') + continue; -+ ++ + /* code => AA */ + code = p; + p[2] = 0; @@ -269,7 +282,7 @@ + + if (*p == '\n' || *p == '\t') + *p = '\0'; -+ ++ + hash = tz_hash(name); + i = malloc(sizeof *i); + memcpy(i->code, code, 2); @@ -289,7 +302,7 @@ + +/* Return location info from hash table, using given timezone name. + * Returns NULL if the name could not be found. */ -+const struct location_info *find_zone_info(struct location_info **li, ++const struct location_info *find_zone_info(struct location_info **li, + const char *name) +{ + uint32_t hash = tz_hash(name); @@ -305,7 +318,7 @@ + } + + return NULL; -+} ++} + +/* Filter out some non-tzdata files and the posix/right databases, if + * present. */ @@ -380,7 +393,7 @@ + dirstack = malloc(dirstack_size * sizeof *dirstack); + dirstack_top = 1; + dirstack[0] = strdup(""); -+ ++ + /* Index array. */ + index_size = 64; + db_index = malloc(index_size * sizeof *db_index); @@ -401,22 +414,22 @@ + struct stat st; + const char *leaf = ents[count - 1]->d_name; + -+ snprintf(name, sizeof name, ZONEINFO_PREFIX "/%s/%s", ++ snprintf(name, sizeof name, ZONEINFO_PREFIX "/%s/%s", + top, leaf); -+ ++ + if (strlen(name) && stat(name, &st) == 0) { + /* Name, relative to the zoneinfo prefix. */ + const char *root = top; + + if (root[0] == '/') root++; + -+ snprintf(name, sizeof name, "%s%s%s", root, ++ snprintf(name, sizeof name, "%s%s%s", root, + *root ? "/": "", leaf); + + if (S_ISDIR(st.st_mode)) { + if (dirstack_top == dirstack_size) { + dirstack_size *= 2; -+ dirstack = realloc(dirstack, ++ dirstack = realloc(dirstack, + dirstack_size * sizeof *dirstack); + } + dirstack[dirstack_top++] = strdup(name); @@ -434,13 +447,16 @@ + + free(ents[--count]); + } -+ ++ + if (count != -1) free(ents); + free(top); + } while (dirstack_top); + + qsort(db_index, index_next, sizeof *db_index, sysdbcmp); + ++ if (!index_next) { ++ db_index[index_next++].id = strdup("UTC"); ++ } + db->index = db_index; + db->index_size = index_next; + @@ -456,7 +472,7 @@ +{ + size_t n; + char *data, *p; -+ ++ + data = malloc(3 * sysdb->index_size + sizeof(FAKE_HEADER) - 1); + + p = mempcpy(data, FAKE_HEADER, sizeof(FAKE_HEADER) - 1); @@ -489,7 +505,7 @@ + ent->pos = 0; + } + } -+ ++ + sysdb->data = (unsigned char *)data; +} + @@ -538,7 +554,7 @@ + struct stat st; + char *p; + int fd; -+ ++ + if (timezone[0] == '\0' || strstr(timezone, "..") != NULL) { + return NULL; + } @@ -547,7 +563,12 @@ + + fd = open(fname, O_RDONLY); + if (fd == -1) { -+ return NULL; ++ if (strcmp(timezone, "UTC")) { ++ return NULL; ++ } else { ++ *length = sizeof(internal_utc); ++ return internal_utc; ++ } + } else if (fstat(fd, &st) != 0 || !is_valid_tzfile(&st, fd)) { + close(fd); + return NULL; @@ -556,7 +577,7 @@ + *length = st.st_size; + p = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0); + close(fd); -+ ++ + return p != MAP_FAILED ? p : NULL; +} + @@ -566,7 +587,7 @@ { int left = 0, right = tzdb->index_size - 1; -@@ -603,9 +1081,49 @@ static int seek_to_tz_position(const uns +@@ -603,9 +1100,49 @@ static int seek_to_tz_position(const unsigned char **tzf, const char *timezone, return 0; } @@ -600,7 +621,7 @@ + if (timezonedb_system == NULL) { + timelib_tzdb *tmp = malloc(sizeof *tmp); + -+ tmp->version = "0.system"; ++ tmp->version = "0"; + tmp->data = NULL; + create_zone_index(tmp); + retrieve_zone_version(tmp); @@ -616,7 +637,7 @@ } const timelib_tzdb_index_entry *timelib_timezone_identifiers_list(const timelib_tzdb *tzdb, int *count) -@@ -617,7 +1135,30 @@ const timelib_tzdb_index_entry *timelib_ +@@ -617,7 +1154,32 @@ const timelib_tzdb_index_entry *timelib_timezone_identifiers_list(const timelib_ int timelib_timezone_id_is_valid(const char *timezone, const timelib_tzdb *tzdb) { const unsigned char *tzf; @@ -630,7 +651,9 @@ + if (timezone[0] == '\0' || strstr(timezone, "..") != NULL) { + return 0; + } -+ ++ if (!strcmp(timezone, "UTC")) { ++ return 1; ++ } + if (system_location_table) { + if (find_zone_info(system_location_table, timezone) != NULL) { + /* found in cache */ @@ -648,7 +671,7 @@ } static int skip_64bit_preamble(const unsigned char **tzf, timelib_tzinfo *tz) -@@ -662,6 +1203,8 @@ static timelib_tzinfo* timelib_tzinfo_ct +@@ -662,6 +1224,8 @@ static timelib_tzinfo* timelib_tzinfo_ctor(const char *name) timelib_tzinfo *timelib_parse_tzfile(const char *timezone, const timelib_tzdb *tzdb, int *error_code) { const unsigned char *tzf; @@ -657,7 +680,7 @@ timelib_tzinfo *tmp; int version; int transitions_result, types_result; -@@ -669,7 +1212,7 @@ timelib_tzinfo *timelib_parse_tzfile(con +@@ -669,7 +1233,7 @@ timelib_tzinfo *timelib_parse_tzfile(const char *timezone, const timelib_tzdb *t *error_code = TIMELIB_ERROR_NO_ERROR; @@ -666,7 +689,7 @@ tmp = timelib_tzinfo_ctor(timezone); version = read_preamble(&tzf, tmp, &type); -@@ -712,11 +1255,36 @@ timelib_tzinfo *timelib_parse_tzfile(con +@@ -712,11 +1276,38 @@ timelib_tzinfo *timelib_parse_tzfile(const char *timezone, const timelib_tzdb *t return NULL; } @@ -689,7 +712,9 @@ + } + + /* Now done with the mmap segment - discard it. */ -+ munmap(memmap, maplen); ++ if (memmap != internal_utc) { ++ munmap(memmap, maplen); ++ } + } else { +#endif if (type == TIMELIB_TZINFO_PHP) { @@ -703,11 +728,11 @@ } else { *error_code = TIMELIB_ERROR_NO_SUCH_TIMEZONE; tmp = NULL; -Index: php-8.2.7/ext/date/php_date.c -=================================================================== ---- php-8.2.7.orig/ext/date/php_date.c -+++ php-8.2.7/ext/date/php_date.c -@@ -472,7 +472,11 @@ PHP_MINFO_FUNCTION(date) +diff --git a/ext/date/php_date.c b/ext/date/php_date.c +index 48c82bf7ec..443299c089 100644 +--- a/ext/date/php_date.c ++++ b/ext/date/php_date.c +@@ -490,7 +490,11 @@ PHP_MINFO_FUNCTION(date) php_info_print_table_row(2, "date/time support", "enabled"); php_info_print_table_row(2, "timelib version", TIMELIB_ASCII_VERSION); php_info_print_table_row(2, "\"Olson\" Timezone Database Version", tzdb->version); ++++++ php8.keyring ++++++ --- /var/tmp/diff_new_pack.w9xYmm/_old 2024-04-05 20:24:57.740262993 +0200 +++ /var/tmp/diff_new_pack.w9xYmm/_new 2024-04-05 20:24:57.740262993 +0200 @@ -1,5 +1,32 @@ -----BEGIN PGP PUBLIC KEY BLOCK----- +mDMEYHHgIBYJKwYBBAHaRw8BAQdAOm0RDYTmM6omlqoTx6Wy65agVJ4q8EPGczNn +YOrHyo20HUpha3ViIFplbGVua2EgPGJ1a2thQHBocC5uZXQ+iJMEExYIADsCGwMF +CwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQTCjZN1dWA+tKu3JYYcB3ncXAqd5AUC +YHHi+QIZAQAKCRAcB3ncXAqd5MZdAP0eAbdHgjHqKYol3QaXRhErAvvLHPSEXN5c +AImF3zIICgD+NJZZMQDXd1OOKDt+YLiIqIq2ibRhOP5mZryPCGkq9QG0J0pha3Vi +IFplbGVua2EgPGpha3ViLm9wZW5zc2xAZ21haWwuY29tPoiQBBMWCAA4FiEEwo2T +dXVgPrSrtyWGHAd53FwKneQFAmBx4owCGwMFCwkIBwIGFQoJCAsCBBYCAwECHgEC +F4AACgkQHAd53FwKneS0NwEAt0IRpoCN/JNwg1TIseybpmC65nSzYVyX10xe4Ji5 +0dcBAI6TYA+47z6F4IVRg2c8Vtg1xktot7b/tKn6hgdv59sLtCdKYWt1YiBaZWxl +bmthIDxqYWt1Yi56ZWxlbmthQGdtYWlsLmNvbT6IkAQTFggAOBYhBMKNk3V1YD60 +q7clhhwHedxcCp3kBQJgceAgAhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJ +EBwHedxcCp3k+3MBAKuK15XyHw+sdFATFuW9vN+lXqHnYid2jRzQUoh5wG/FAQDc +BXQgXRfe72XRoxY4AE3E4onGMfzW3kbDKDVF7o4zDrg4BGBx4CASCisGAQQBl1UB +BQEBB0Bm2FjWsSDUwL5nbAhtl+rwnGLKbWiVYrwHQocgKFj6GwMBCAeIeAQYFggA +IBYhBMKNk3V1YD60q7clhhwHedxcCp3kBQJgceAgAhsMAAoJEBwHedxcCp3k8ZwA +/jLRHUBKIeRAxeGJhoqJRr2oTxrP887FuX9/ikSX21bcAQD90AB2fu6dpAkOFyZz +X9UdE7QxtBhHVWRx3DRr4P/cDrgzBGBx4KcWCSsGAQQB2kcPAQEHQEDgLoxnsU3i +jAnPZwAbShiRcxeQ/gXkqufbQlVJy/BfiPUEGBYIACYWIQTCjZN1dWA+tKu3JYYc +B3ncXAqd5AUCYHHgpwIbAgUJAeEzgACBCRAcB3ncXAqd5HYgBBkWCAAdFiEEK92x +XVRjS6mw6oyiCpxkP6el608FAmBx4KcACgkQCpxkP6el608JUgEA7NU04gu368gu +lSeGbGcjAERgJmFcxHjyEoqb7eCR+9UBALhy3Q6VSio081TBhtg9M82QL0NoxlkZ +NYg3TjzR5U4Mg9YA/1tG8HmWUqv5dE901v18ErGVKo8di06VqJT4jE8BRNLcAQCI +PkJjNZFtt73kqNgwA/L2JPF2T6YJWYSPOtmQMrCnCw== +=e6EH +-----END PGP PUBLIC KEY BLOCK----- +-----BEGIN PGP PUBLIC KEY BLOCK----- + mQINBGBlJjMBEAC2wbO/PIAzVSAp2kk7MXmzoXVRSPyEbnjN6qm77nrzvugh/beP ZucG6lbXMxRsCj4GS9xLcGZoSQZhT/2GJdy+aUt7zf6sympJUTcgPdEVmf5uTxWn QkBg0Bdm6h8xwvgTZVrdfwy7f7jfAsGSXKzEmJfJ2L6LHmAMI3I+csdPqKBHSzj6 @@ -63,188 +90,4 @@ wpxdIIyaoaS8NSuPIrV1g4SUXYs= =fB6k -----END PGP PUBLIC KEY BLOCK----- ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -iU/+ -=pJ+M ------END PGP PUBLIC KEY BLOCK----- ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -bItY -=z8k6 ------END PGP PUBLIC KEY BLOCK----- ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -U3I= -=wkmV ------END PGP PUBLIC KEY BLOCK-----