Version in base suite: 2.4.62-1~deb12u2 Base version: apache2_2.4.62-1~deb12u2 Target version: apache2_2.4.65-1~deb12u1 Base file: /srv/ftp-master.debian.org/ftp/pool/main/a/apache2/apache2_2.4.62-1~deb12u2.dsc Target file: /srv/ftp-master.debian.org/policy/pool/main/a/apache2/apache2_2.4.65-1~deb12u1.dsc .github/workflows/linux.yml | 50 .github/workflows/windows.yml | 63 ABOUT_APACHE | 2 CHANGES | 308 ++ CMakeLists.txt | 40 Makefile.in | 12 NOTICE | 2 README.cmake | 3 build/apr_common.m4 | 2 build/build-modules-c.cmake | 27 build/config.guess | 121 build/config.sub | 952 ++++-- build/ltmain.sh | 736 ++--- build/modules.c.in | 41 configure | 692 ---- debian/apache2.NEWS | 53 debian/changelog | 17 debian/patches/0008-CVE-2024-38474-regression-mod_rewrite-Better-questio.patch | 241 - debian/patches/0009-CVE-2024-38474-regression-mod_rewrite-Improve-safe-q.patch | 75 debian/patches/0010-CVE-2024-39884-Regression-Remove-support-for-Request.patch | 160 - debian/patches/fhs_compliance.patch | 2 debian/patches/series | 3 docs/conf/charset.conv | 4 docs/conf/extra/httpd-dav.conf.in | 7 docs/conf/mime.types | 1 docs/manual/bind.html.de | 2 docs/manual/bind.html.en | 2 docs/manual/bind.html.fr.utf8 | 2 docs/manual/bind.html.ja.utf8 | 2 docs/manual/bind.html.ko.euc-kr | 2 docs/manual/bind.html.tr.utf8 | 2 docs/manual/caching.html.en | 2 docs/manual/caching.html.fr.utf8 | 2 docs/manual/caching.html.tr.utf8 | 2 docs/manual/configuring.html.de | 2 docs/manual/configuring.html.en | 2 docs/manual/configuring.html.fr.utf8 | 2 docs/manual/configuring.html.ja.utf8 | 2 docs/manual/configuring.html.ko.euc-kr | 2 docs/manual/configuring.html.tr.utf8 | 2 docs/manual/content-negotiation.html.en | 2 docs/manual/content-negotiation.html.fr.utf8 | 149 - docs/manual/content-negotiation.html.ja.utf8 | 2 docs/manual/content-negotiation.html.ko.euc-kr | 2 docs/manual/content-negotiation.html.tr.utf8 | 2 docs/manual/custom-error.html.en | 2 docs/manual/custom-error.html.es | 2 docs/manual/custom-error.html.fr.utf8 | 2 docs/manual/custom-error.html.ja.utf8 | 2 docs/manual/custom-error.html.ko.euc-kr | 2 docs/manual/custom-error.html.tr.utf8 | 2 docs/manual/developer/API.html.en | 2 docs/manual/developer/debugging.html.en | 2 docs/manual/developer/documenting.html.en | 2 docs/manual/developer/documenting.html.zh-cn.utf8 | 2 docs/manual/developer/filters.html.en | 2 docs/manual/developer/hooks.html.en | 2 docs/manual/developer/index.html.en | 2 docs/manual/developer/index.html.zh-cn.utf8 | 2 docs/manual/developer/modguide.html.en | 2 docs/manual/developer/modules.html.en | 2 docs/manual/developer/modules.html.ja.utf8 | 2 docs/manual/developer/new_api_2_4.html.en | 2 docs/manual/developer/output-filters.html.en | 2 docs/manual/developer/request.html.en | 2 docs/manual/developer/thread_safety.html.en | 2 docs/manual/dns-caveats.html.en | 2 docs/manual/dns-caveats.html.fr.utf8 | 2 docs/manual/dns-caveats.html.ja.utf8 | 2 docs/manual/dns-caveats.html.ko.euc-kr | 2 docs/manual/dns-caveats.html.tr.utf8 | 2 docs/manual/dso.html.en | 2 docs/manual/dso.html.fr.utf8 | 34 docs/manual/dso.html.ja.utf8 | 2 docs/manual/dso.html.ko.euc-kr | 2 docs/manual/dso.html.tr.utf8 | 2 docs/manual/env.html.en | 2 docs/manual/env.html.fr.utf8 | 66 docs/manual/env.html.ja.utf8 | 2 docs/manual/env.html.ko.euc-kr | 2 docs/manual/env.html.tr.utf8 | 2 docs/manual/expr.html.en | 4 docs/manual/expr.html.fr.utf8 | 4 docs/manual/faq/index.html.en | 2 docs/manual/faq/index.html.es | 2 docs/manual/faq/index.html.fr.utf8 | 2 docs/manual/faq/index.html.tr.utf8 | 2 docs/manual/faq/index.html.zh-cn.utf8 | 2 docs/manual/filter.html.en | 2 docs/manual/filter.html.es | 2 docs/manual/filter.html.fr.utf8 | 2 docs/manual/filter.html.ja.utf8 | 2 docs/manual/filter.html.ko.euc-kr | 2 docs/manual/filter.html.tr.utf8 | 2 docs/manual/getting-started.html.en | 2 docs/manual/getting-started.html.fr.utf8 | 2 docs/manual/getting-started.html.ru.utf8 | 2 docs/manual/glossary.html.de | 2 docs/manual/glossary.html.en | 2 docs/manual/glossary.html.es | 2 docs/manual/glossary.html.fr.utf8 | 2 docs/manual/glossary.html.ja.utf8 | 2 docs/manual/glossary.html.ko.euc-kr | 2 docs/manual/glossary.html.tr.utf8 | 2 docs/manual/handler.html.en | 2 docs/manual/handler.html.es | 2 docs/manual/handler.html.fr.utf8 | 2 docs/manual/handler.html.ja.utf8 | 2 docs/manual/handler.html.ko.euc-kr | 2 docs/manual/handler.html.tr.utf8 | 2 docs/manual/handler.html.zh-cn.utf8 | 2 docs/manual/howto/access.html.en | 2 docs/manual/howto/access.html.es | 2 docs/manual/howto/access.html.fr.utf8 | 2 docs/manual/howto/auth.html.en | 2 docs/manual/howto/auth.html.es | 2 docs/manual/howto/auth.html.fr.utf8 | 2 docs/manual/howto/auth.html.ja.utf8 | 2 docs/manual/howto/auth.html.ko.euc-kr | 2 docs/manual/howto/auth.html.tr.utf8 | 2 docs/manual/howto/cgi.html.en | 2 docs/manual/howto/cgi.html.es | 2 docs/manual/howto/cgi.html.fr.utf8 | 2 docs/manual/howto/cgi.html.ja.utf8 | 2 docs/manual/howto/cgi.html.ko.euc-kr | 2 docs/manual/howto/htaccess.html.en | 2 docs/manual/howto/htaccess.html.es | 2 docs/manual/howto/htaccess.html.fr.utf8 | 2 docs/manual/howto/htaccess.html.ja.utf8 | 2 docs/manual/howto/htaccess.html.ko.euc-kr | 2 docs/manual/howto/htaccess.html.pt-br | 2 docs/manual/howto/http2.html.en | 2 docs/manual/howto/http2.html.es | 2 docs/manual/howto/http2.html.fr.utf8 | 2 docs/manual/howto/index.html.en | 2 docs/manual/howto/index.html.es | 2 docs/manual/howto/index.html.fr.utf8 | 2 docs/manual/howto/index.html.ja.utf8 | 2 docs/manual/howto/index.html.ko.euc-kr | 2 docs/manual/howto/index.html.zh-cn.utf8 | 2 docs/manual/howto/public_html.html.en | 2 docs/manual/howto/public_html.html.es | 2 docs/manual/howto/public_html.html.fr.utf8 | 2 docs/manual/howto/public_html.html.ja.utf8 | 2 docs/manual/howto/public_html.html.ko.euc-kr | 2 docs/manual/howto/public_html.html.tr.utf8 | 2 docs/manual/howto/reverse_proxy.html.en | 2 docs/manual/howto/reverse_proxy.html.fr.utf8 | 2 docs/manual/howto/ssi.html.en | 2 docs/manual/howto/ssi.html.es | 2 docs/manual/howto/ssi.html.fr.utf8 | 2 docs/manual/howto/ssi.html.ja.utf8 | 2 docs/manual/howto/ssi.html.ko.euc-kr | 2 docs/manual/index.html.da | 2 docs/manual/index.html.de | 2 docs/manual/index.html.en | 2 docs/manual/index.html.es | 2 docs/manual/index.html.fr.utf8 | 2 docs/manual/index.html.ja.utf8 | 2 docs/manual/index.html.ko.euc-kr | 2 docs/manual/index.html.pt-br | 2 docs/manual/index.html.ru.utf8 | 2 docs/manual/index.html.tr.utf8 | 2 docs/manual/index.html.zh-cn.utf8 | 2 docs/manual/install.html.de | 2 docs/manual/install.html.en | 2 docs/manual/install.html.es | 2 docs/manual/install.html.fr.utf8 | 2 docs/manual/install.html.ja.utf8 | 2 docs/manual/install.html.ko.euc-kr | 2 docs/manual/install.html.tr.utf8 | 2 docs/manual/invoking.html.de | 2 docs/manual/invoking.html.en | 2 docs/manual/invoking.html.es | 2 docs/manual/invoking.html.fr.utf8 | 2 docs/manual/invoking.html.ja.utf8 | 2 docs/manual/invoking.html.ko.euc-kr | 2 docs/manual/invoking.html.tr.utf8 | 2 docs/manual/license.html.en | 2 docs/manual/logs.html.en | 2 docs/manual/logs.html.fr.utf8 | 2 docs/manual/logs.html.ja.utf8 | 2 docs/manual/logs.html.ko.euc-kr | 2 docs/manual/logs.html.tr.utf8 | 2 docs/manual/misc/index.html.en | 2 docs/manual/misc/index.html.es | 2 docs/manual/misc/index.html.fr.utf8 | 2 docs/manual/misc/index.html.ko.euc-kr | 2 docs/manual/misc/index.html.tr.utf8 | 2 docs/manual/misc/index.html.zh-cn.utf8 | 2 docs/manual/misc/password_encryptions.html.en | 2 docs/manual/misc/password_encryptions.html.fr.utf8 | 2 docs/manual/misc/perf-tuning.html.en | 2 docs/manual/misc/perf-tuning.html.fr.utf8 | 2 docs/manual/misc/perf-tuning.html.ko.euc-kr | 2 docs/manual/misc/perf-tuning.html.tr.utf8 | 2 docs/manual/misc/relevant_standards.html.en | 2 docs/manual/misc/relevant_standards.html.fr.utf8 | 2 docs/manual/misc/relevant_standards.html.ko.euc-kr | 2 docs/manual/misc/security_tips.html.en | 2 docs/manual/misc/security_tips.html.fr.utf8 | 2 docs/manual/misc/security_tips.html.ko.euc-kr | 2 docs/manual/misc/security_tips.html.tr.utf8 | 2 docs/manual/mod/core.html.de | 2 docs/manual/mod/core.html.en | 35 docs/manual/mod/core.html.es | 2 docs/manual/mod/core.html.fr.utf8 | 38 docs/manual/mod/core.html.ja.utf8 | 2 docs/manual/mod/core.html.tr.utf8 | 2 docs/manual/mod/directive-dict.html.en | 2 docs/manual/mod/directive-dict.html.es | 2 docs/manual/mod/directive-dict.html.fr.utf8 | 2 docs/manual/mod/directive-dict.html.ja.utf8 | 2 docs/manual/mod/directive-dict.html.ko.euc-kr | 2 docs/manual/mod/directive-dict.html.tr.utf8 | 2 docs/manual/mod/directives.html.de | 21 docs/manual/mod/directives.html.en | 21 docs/manual/mod/directives.html.es | 21 docs/manual/mod/directives.html.fr.utf8 | 21 docs/manual/mod/directives.html.ja.utf8 | 21 docs/manual/mod/directives.html.ko.euc-kr | 21 docs/manual/mod/directives.html.tr.utf8 | 21 docs/manual/mod/directives.html.zh-cn.utf8 | 21 docs/manual/mod/event.html.en | 2 docs/manual/mod/event.html.fr.utf8 | 2 docs/manual/mod/index.html.de | 7 docs/manual/mod/index.html.en | 7 docs/manual/mod/index.html.es | 7 docs/manual/mod/index.html.fr.utf8 | 7 docs/manual/mod/index.html.ja.utf8 | 7 docs/manual/mod/index.html.ko.euc-kr | 7 docs/manual/mod/index.html.tr.utf8 | 7 docs/manual/mod/index.html.zh-cn.utf8 | 7 docs/manual/mod/mod_access_compat.html.en | 2 docs/manual/mod/mod_access_compat.html.fr.utf8 | 2 docs/manual/mod/mod_access_compat.html.ja.utf8 | 2 docs/manual/mod/mod_actions.html.de | 2 docs/manual/mod/mod_actions.html.en | 2 docs/manual/mod/mod_actions.html.fr.utf8 | 2 docs/manual/mod/mod_actions.html.ja.utf8 | 2 docs/manual/mod/mod_actions.html.ko.euc-kr | 2 docs/manual/mod/mod_alias.html.en | 2 docs/manual/mod/mod_alias.html.fr.utf8 | 2 docs/manual/mod/mod_alias.html.ja.utf8 | 2 docs/manual/mod/mod_alias.html.ko.euc-kr | 2 docs/manual/mod/mod_alias.html.tr.utf8 | 2 docs/manual/mod/mod_allowmethods.html.en | 2 docs/manual/mod/mod_allowmethods.html.fr.utf8 | 2 docs/manual/mod/mod_asis.html.en | 2 docs/manual/mod/mod_asis.html.fr.utf8 | 2 docs/manual/mod/mod_asis.html.ja.utf8 | 2 docs/manual/mod/mod_asis.html.ko.euc-kr | 2 docs/manual/mod/mod_auth_basic.html.en | 2 docs/manual/mod/mod_auth_basic.html.fr.utf8 | 2 docs/manual/mod/mod_auth_basic.html.ja.utf8 | 2 docs/manual/mod/mod_auth_basic.html.ko.euc-kr | 2 docs/manual/mod/mod_auth_digest.html.en | 2 docs/manual/mod/mod_auth_digest.html.fr.utf8 | 2 docs/manual/mod/mod_auth_digest.html.ko.euc-kr | 2 docs/manual/mod/mod_auth_form.html.en | 3 docs/manual/mod/mod_auth_form.html.fr.utf8 | 3 docs/manual/mod/mod_authn_anon.html.en | 2 docs/manual/mod/mod_authn_anon.html.fr.utf8 | 2 docs/manual/mod/mod_authn_anon.html.ja.utf8 | 2 docs/manual/mod/mod_authn_anon.html.ko.euc-kr | 2 docs/manual/mod/mod_authn_core.html.en | 2 docs/manual/mod/mod_authn_core.html.fr.utf8 | 2 docs/manual/mod/mod_authn_dbd.html.en | 2 docs/manual/mod/mod_authn_dbd.html.fr.utf8 | 2 docs/manual/mod/mod_authn_dbm.html.en | 2 docs/manual/mod/mod_authn_dbm.html.fr.utf8 | 2 docs/manual/mod/mod_authn_dbm.html.ja.utf8 | 2 docs/manual/mod/mod_authn_dbm.html.ko.euc-kr | 2 docs/manual/mod/mod_authn_file.html.en | 2 docs/manual/mod/mod_authn_file.html.fr.utf8 | 2 docs/manual/mod/mod_authn_file.html.ja.utf8 | 2 docs/manual/mod/mod_authn_file.html.ko.euc-kr | 2 docs/manual/mod/mod_authn_socache.html.en | 2 docs/manual/mod/mod_authn_socache.html.fr.utf8 | 2 docs/manual/mod/mod_authnz_fcgi.html.en | 2 docs/manual/mod/mod_authnz_fcgi.html.fr.utf8 | 2 docs/manual/mod/mod_authnz_ldap.html.en | 29 docs/manual/mod/mod_authnz_ldap.html.fr.utf8 | 34 docs/manual/mod/mod_authz_core.html.en | 2 docs/manual/mod/mod_authz_core.html.fr.utf8 | 2 docs/manual/mod/mod_authz_dbd.html.en | 2 docs/manual/mod/mod_authz_dbd.html.fr.utf8 | 2 docs/manual/mod/mod_authz_dbm.html.en | 2 docs/manual/mod/mod_authz_dbm.html.fr.utf8 | 2 docs/manual/mod/mod_authz_dbm.html.ko.euc-kr | 2 docs/manual/mod/mod_authz_groupfile.html.en | 2 docs/manual/mod/mod_authz_groupfile.html.fr.utf8 | 2 docs/manual/mod/mod_authz_groupfile.html.ja.utf8 | 2 docs/manual/mod/mod_authz_groupfile.html.ko.euc-kr | 2 docs/manual/mod/mod_authz_host.html.en | 2 docs/manual/mod/mod_authz_host.html.fr.utf8 | 2 docs/manual/mod/mod_authz_owner.html.en | 2 docs/manual/mod/mod_authz_owner.html.fr.utf8 | 2 docs/manual/mod/mod_authz_owner.html.ja.utf8 | 2 docs/manual/mod/mod_authz_owner.html.ko.euc-kr | 2 docs/manual/mod/mod_authz_user.html.en | 2 docs/manual/mod/mod_authz_user.html.fr.utf8 | 2 docs/manual/mod/mod_authz_user.html.ja.utf8 | 2 docs/manual/mod/mod_authz_user.html.ko.euc-kr | 2 docs/manual/mod/mod_autoindex.html.en | 2 docs/manual/mod/mod_autoindex.html.fr.utf8 | 2 docs/manual/mod/mod_autoindex.html.ja.utf8 | 2 docs/manual/mod/mod_autoindex.html.ko.euc-kr | 2 docs/manual/mod/mod_autoindex.html.tr.utf8 | 2 docs/manual/mod/mod_brotli.html.en | 2 docs/manual/mod/mod_brotli.html.fr.utf8 | 2 docs/manual/mod/mod_buffer.html.en | 2 docs/manual/mod/mod_buffer.html.fr.utf8 | 2 docs/manual/mod/mod_cache.html.en | 2 docs/manual/mod/mod_cache.html.fr.utf8 | 2 docs/manual/mod/mod_cache.html.ja.utf8 | 2 docs/manual/mod/mod_cache.html.ko.euc-kr | 2 docs/manual/mod/mod_cache_disk.html.en | 2 docs/manual/mod/mod_cache_disk.html.fr.utf8 | 2 docs/manual/mod/mod_cache_disk.html.ja.utf8 | 2 docs/manual/mod/mod_cache_disk.html.ko.euc-kr | 2 docs/manual/mod/mod_cache_socache.html.en | 2 docs/manual/mod/mod_cache_socache.html.fr.utf8 | 2 docs/manual/mod/mod_cern_meta.html.en | 2 docs/manual/mod/mod_cern_meta.html.fr.utf8 | 2 docs/manual/mod/mod_cern_meta.html.ko.euc-kr | 2 docs/manual/mod/mod_cgi.html.en | 2 docs/manual/mod/mod_cgi.html.fr.utf8 | 2 docs/manual/mod/mod_cgi.html.ja.utf8 | 2 docs/manual/mod/mod_cgi.html.ko.euc-kr | 2 docs/manual/mod/mod_cgid.html.en | 2 docs/manual/mod/mod_cgid.html.fr.utf8 | 2 docs/manual/mod/mod_cgid.html.ja.utf8 | 2 docs/manual/mod/mod_cgid.html.ko.euc-kr | 2 docs/manual/mod/mod_charset_lite.html.en | 2 docs/manual/mod/mod_charset_lite.html.fr.utf8 | 2 docs/manual/mod/mod_charset_lite.html.ko.euc-kr | 2 docs/manual/mod/mod_data.html.en | 2 docs/manual/mod/mod_data.html.fr.utf8 | 2 docs/manual/mod/mod_dav.html.en | 2 docs/manual/mod/mod_dav.html.fr.utf8 | 2 docs/manual/mod/mod_dav.html.ja.utf8 | 2 docs/manual/mod/mod_dav.html.ko.euc-kr | 2 docs/manual/mod/mod_dav_fs.html.en | 2 docs/manual/mod/mod_dav_fs.html.fr.utf8 | 2 docs/manual/mod/mod_dav_fs.html.ja.utf8 | 2 docs/manual/mod/mod_dav_fs.html.ko.euc-kr | 2 docs/manual/mod/mod_dav_lock.html.en | 2 docs/manual/mod/mod_dav_lock.html.fr.utf8 | 2 docs/manual/mod/mod_dav_lock.html.ja.utf8 | 2 docs/manual/mod/mod_dbd.html.en | 2 docs/manual/mod/mod_dbd.html.fr.utf8 | 2 docs/manual/mod/mod_deflate.html.en | 2 docs/manual/mod/mod_deflate.html.fr.utf8 | 2 docs/manual/mod/mod_deflate.html.ja.utf8 | 2 docs/manual/mod/mod_deflate.html.ko.euc-kr | 2 docs/manual/mod/mod_dialup.html.en | 2 docs/manual/mod/mod_dialup.html.fr.utf8 | 2 docs/manual/mod/mod_dir.html.en | 2 docs/manual/mod/mod_dir.html.fr.utf8 | 2 docs/manual/mod/mod_dir.html.ja.utf8 | 2 docs/manual/mod/mod_dir.html.ko.euc-kr | 2 docs/manual/mod/mod_dir.html.tr.utf8 | 2 docs/manual/mod/mod_dumpio.html.en | 2 docs/manual/mod/mod_dumpio.html.fr.utf8 | 2 docs/manual/mod/mod_dumpio.html.ja.utf8 | 2 docs/manual/mod/mod_echo.html.en | 2 docs/manual/mod/mod_echo.html.fr.utf8 | 2 docs/manual/mod/mod_echo.html.ja.utf8 | 2 docs/manual/mod/mod_echo.html.ko.euc-kr | 2 docs/manual/mod/mod_env.html.en | 2 docs/manual/mod/mod_env.html.fr.utf8 | 2 docs/manual/mod/mod_env.html.ja.utf8 | 2 docs/manual/mod/mod_env.html.ko.euc-kr | 2 docs/manual/mod/mod_env.html.tr.utf8 | 2 docs/manual/mod/mod_example_hooks.html.en | 2 docs/manual/mod/mod_example_hooks.html.fr.utf8 | 2 docs/manual/mod/mod_example_hooks.html.ko.euc-kr | 2 docs/manual/mod/mod_expires.html.en | 2 docs/manual/mod/mod_expires.html.fr.utf8 | 2 docs/manual/mod/mod_expires.html.ja.utf8 | 2 docs/manual/mod/mod_expires.html.ko.euc-kr | 2 docs/manual/mod/mod_ext_filter.html.en | 2 docs/manual/mod/mod_ext_filter.html.fr.utf8 | 2 docs/manual/mod/mod_ext_filter.html.ja.utf8 | 2 docs/manual/mod/mod_ext_filter.html.ko.euc-kr | 2 docs/manual/mod/mod_file_cache.html.en | 2 docs/manual/mod/mod_file_cache.html.fr.utf8 | 2 docs/manual/mod/mod_file_cache.html.ko.euc-kr | 2 docs/manual/mod/mod_filter.html.en | 2 docs/manual/mod/mod_filter.html.fr.utf8 | 2 docs/manual/mod/mod_headers.html.en | 2 docs/manual/mod/mod_headers.html.fr.utf8 | 2 docs/manual/mod/mod_headers.html.ja.utf8 | 2 docs/manual/mod/mod_headers.html.ko.euc-kr | 2 docs/manual/mod/mod_heartbeat.html.en | 2 docs/manual/mod/mod_heartbeat.html.fr.utf8 | 2 docs/manual/mod/mod_heartmonitor.html.en | 2 docs/manual/mod/mod_heartmonitor.html.fr.utf8 | 2 docs/manual/mod/mod_http2.html.en | 25 docs/manual/mod/mod_http2.html.fr.utf8 | 28 docs/manual/mod/mod_ident.html.en | 2 docs/manual/mod/mod_ident.html.fr.utf8 | 2 docs/manual/mod/mod_ident.html.ja.utf8 | 2 docs/manual/mod/mod_ident.html.ko.euc-kr | 2 docs/manual/mod/mod_imagemap.html.en | 2 docs/manual/mod/mod_imagemap.html.fr.utf8 | 2 docs/manual/mod/mod_imagemap.html.ko.euc-kr | 2 docs/manual/mod/mod_include.html.en | 2 docs/manual/mod/mod_include.html.fr.utf8 | 2 docs/manual/mod/mod_include.html.ja.utf8 | 2 docs/manual/mod/mod_info.html.en | 2 docs/manual/mod/mod_info.html.fr.utf8 | 2 docs/manual/mod/mod_info.html.ja.utf8 | 2 docs/manual/mod/mod_info.html.ko.euc-kr | 2 docs/manual/mod/mod_isapi.html.en | 2 docs/manual/mod/mod_isapi.html.fr.utf8 | 2 docs/manual/mod/mod_isapi.html.ko.euc-kr | 2 docs/manual/mod/mod_lbmethod_bybusyness.html.en | 2 docs/manual/mod/mod_lbmethod_bybusyness.html.fr.utf8 | 2 docs/manual/mod/mod_lbmethod_byrequests.html.en | 2 docs/manual/mod/mod_lbmethod_byrequests.html.fr.utf8 | 2 docs/manual/mod/mod_lbmethod_bytraffic.html.en | 2 docs/manual/mod/mod_lbmethod_bytraffic.html.fr.utf8 | 2 docs/manual/mod/mod_lbmethod_heartbeat.html.en | 2 docs/manual/mod/mod_lbmethod_heartbeat.html.fr.utf8 | 2 docs/manual/mod/mod_ldap.html.en | 2 docs/manual/mod/mod_ldap.html.fr.utf8 | 2 docs/manual/mod/mod_log_config.html.en | 2 docs/manual/mod/mod_log_config.html.fr.utf8 | 2 docs/manual/mod/mod_log_config.html.ja.utf8 | 2 docs/manual/mod/mod_log_config.html.ko.euc-kr | 2 docs/manual/mod/mod_log_config.html.tr.utf8 | 2 docs/manual/mod/mod_log_debug.html.en | 2 docs/manual/mod/mod_log_debug.html.fr.utf8 | 2 docs/manual/mod/mod_log_forensic.html.en | 2 docs/manual/mod/mod_log_forensic.html.fr.utf8 | 2 docs/manual/mod/mod_log_forensic.html.ja.utf8 | 2 docs/manual/mod/mod_log_forensic.html.tr.utf8 | 2 docs/manual/mod/mod_logio.html.en | 2 docs/manual/mod/mod_logio.html.fr.utf8 | 2 docs/manual/mod/mod_logio.html.ja.utf8 | 2 docs/manual/mod/mod_logio.html.ko.euc-kr | 2 docs/manual/mod/mod_logio.html.tr.utf8 | 2 docs/manual/mod/mod_lua.html.en | 4 docs/manual/mod/mod_lua.html.fr.utf8 | 4 docs/manual/mod/mod_macro.html.en | 2 docs/manual/mod/mod_macro.html.fr.utf8 | 2 docs/manual/mod/mod_md.html.en | 96 docs/manual/mod/mod_md.html.fr.utf8 | 102 docs/manual/mod/mod_mime.html.en | 2 docs/manual/mod/mod_mime.html.fr.utf8 | 2 docs/manual/mod/mod_mime.html.ja.utf8 | 2 docs/manual/mod/mod_mime_magic.html.en | 2 docs/manual/mod/mod_mime_magic.html.fr.utf8 | 2 docs/manual/mod/mod_negotiation.html.en | 2 docs/manual/mod/mod_negotiation.html.fr.utf8 | 2 docs/manual/mod/mod_negotiation.html.ja.utf8 | 2 docs/manual/mod/mod_nw_ssl.html.en | 2 docs/manual/mod/mod_nw_ssl.html.fr.utf8 | 2 docs/manual/mod/mod_privileges.html.en | 2 docs/manual/mod/mod_privileges.html.fr.utf8 | 2 docs/manual/mod/mod_proxy.html.en | 2 docs/manual/mod/mod_proxy.html.fr.utf8 | 2 docs/manual/mod/mod_proxy.html.ja.utf8 | 2 docs/manual/mod/mod_proxy_ajp.html.en | 2 docs/manual/mod/mod_proxy_ajp.html.fr.utf8 | 2 docs/manual/mod/mod_proxy_ajp.html.ja.utf8 | 2 docs/manual/mod/mod_proxy_balancer.html.en | 2 docs/manual/mod/mod_proxy_balancer.html.fr.utf8 | 2 docs/manual/mod/mod_proxy_balancer.html.ja.utf8 | 2 docs/manual/mod/mod_proxy_connect.html.en | 2 docs/manual/mod/mod_proxy_connect.html.fr.utf8 | 2 docs/manual/mod/mod_proxy_connect.html.ja.utf8 | 2 docs/manual/mod/mod_proxy_express.html.en | 2 docs/manual/mod/mod_proxy_express.html.fr.utf8 | 2 docs/manual/mod/mod_proxy_fcgi.html.en | 2 docs/manual/mod/mod_proxy_fcgi.html.fr.utf8 | 2 docs/manual/mod/mod_proxy_fdpass.html.en | 2 docs/manual/mod/mod_proxy_fdpass.html.fr.utf8 | 2 docs/manual/mod/mod_proxy_ftp.html.en | 2 docs/manual/mod/mod_proxy_ftp.html.fr.utf8 | 2 docs/manual/mod/mod_proxy_hcheck.html.en | 2 docs/manual/mod/mod_proxy_hcheck.html.fr.utf8 | 2 docs/manual/mod/mod_proxy_html.html.en | 2 docs/manual/mod/mod_proxy_html.html.fr.utf8 | 2 docs/manual/mod/mod_proxy_http.html.en | 2 docs/manual/mod/mod_proxy_http.html.fr.utf8 | 2 docs/manual/mod/mod_proxy_http2.html.en | 2 docs/manual/mod/mod_proxy_http2.html.fr.utf8 | 2 docs/manual/mod/mod_proxy_scgi.html.en | 2 docs/manual/mod/mod_proxy_scgi.html.fr.utf8 | 2 docs/manual/mod/mod_proxy_uwsgi.html.en | 2 docs/manual/mod/mod_proxy_uwsgi.html.fr.utf8 | 2 docs/manual/mod/mod_proxy_wstunnel.html.en | 2 docs/manual/mod/mod_proxy_wstunnel.html.fr.utf8 | 2 docs/manual/mod/mod_ratelimit.html.en | 2 docs/manual/mod/mod_ratelimit.html.fr.utf8 | 2 docs/manual/mod/mod_reflector.html.en | 2 docs/manual/mod/mod_reflector.html.fr.utf8 | 2 docs/manual/mod/mod_remoteip.html.en | 2 docs/manual/mod/mod_remoteip.html.fr.utf8 | 2 docs/manual/mod/mod_reqtimeout.html.en | 2 docs/manual/mod/mod_reqtimeout.html.fr.utf8 | 2 docs/manual/mod/mod_request.html.en | 2 docs/manual/mod/mod_request.html.fr.utf8 | 2 docs/manual/mod/mod_request.html.tr.utf8 | 2 docs/manual/mod/mod_rewrite.html.en | 8 docs/manual/mod/mod_rewrite.html.fr.utf8 | 16 docs/manual/mod/mod_sed.html.en | 2 docs/manual/mod/mod_sed.html.fr.utf8 | 2 docs/manual/mod/mod_session.html.en | 2 docs/manual/mod/mod_session.html.fr.utf8 | 2 docs/manual/mod/mod_session_cookie.html.en | 2 docs/manual/mod/mod_session_cookie.html.fr.utf8 | 2 docs/manual/mod/mod_session_crypto.html.en | 2 docs/manual/mod/mod_session_crypto.html.fr.utf8 | 2 docs/manual/mod/mod_session_dbd.html.en | 2 docs/manual/mod/mod_session_dbd.html.fr.utf8 | 2 docs/manual/mod/mod_setenvif.html.en | 2 docs/manual/mod/mod_setenvif.html.fr.utf8 | 2 docs/manual/mod/mod_setenvif.html.ja.utf8 | 2 docs/manual/mod/mod_setenvif.html.ko.euc-kr | 2 docs/manual/mod/mod_setenvif.html.tr.utf8 | 2 docs/manual/mod/mod_slotmem_plain.html.en | 2 docs/manual/mod/mod_slotmem_plain.html.fr.utf8 | 2 docs/manual/mod/mod_slotmem_shm.html.en | 2 docs/manual/mod/mod_slotmem_shm.html.fr.utf8 | 2 docs/manual/mod/mod_so.html.en | 2 docs/manual/mod/mod_so.html.fr.utf8 | 2 docs/manual/mod/mod_so.html.ja.utf8 | 2 docs/manual/mod/mod_so.html.ko.euc-kr | 2 docs/manual/mod/mod_so.html.tr.utf8 | 2 docs/manual/mod/mod_socache_dbm.html.en | 2 docs/manual/mod/mod_socache_dbm.html.fr.utf8 | 2 docs/manual/mod/mod_socache_dc.html.en | 2 docs/manual/mod/mod_socache_dc.html.fr.utf8 | 2 docs/manual/mod/mod_socache_memcache.html.en | 2 docs/manual/mod/mod_socache_memcache.html.fr.utf8 | 2 docs/manual/mod/mod_socache_redis.html.en | 2 docs/manual/mod/mod_socache_redis.html.fr.utf8 | 2 docs/manual/mod/mod_socache_shmcb.html.en | 2 docs/manual/mod/mod_socache_shmcb.html.fr.utf8 | 2 docs/manual/mod/mod_speling.html.en | 2 docs/manual/mod/mod_speling.html.fr.utf8 | 2 docs/manual/mod/mod_speling.html.ja.utf8 | 2 docs/manual/mod/mod_speling.html.ko.euc-kr | 2 docs/manual/mod/mod_ssl.html.en | 20 docs/manual/mod/mod_ssl.html.fr.utf8 | 23 docs/manual/mod/mod_status.html.en | 2 docs/manual/mod/mod_status.html.fr.utf8 | 2 docs/manual/mod/mod_status.html.ja.utf8 | 2 docs/manual/mod/mod_status.html.ko.euc-kr | 2 docs/manual/mod/mod_status.html.tr.utf8 | 2 docs/manual/mod/mod_substitute.html.en | 2 docs/manual/mod/mod_substitute.html.fr.utf8 | 2 docs/manual/mod/mod_suexec.html.en | 2 docs/manual/mod/mod_suexec.html.fr.utf8 | 2 docs/manual/mod/mod_suexec.html.ja.utf8 | 2 docs/manual/mod/mod_suexec.html.ko.euc-kr | 2 docs/manual/mod/mod_suexec.html.tr.utf8 | 2 docs/manual/mod/mod_systemd.html.en | 2 docs/manual/mod/mod_systemd.html.fr.utf8 | 2 docs/manual/mod/mod_tls.html | 5 docs/manual/mod/mod_tls.html.en | 663 ---- docs/manual/mod/mod_unique_id.html.en | 2 docs/manual/mod/mod_unique_id.html.fr.utf8 | 2 docs/manual/mod/mod_unique_id.html.ja.utf8 | 2 docs/manual/mod/mod_unique_id.html.ko.euc-kr | 2 docs/manual/mod/mod_unixd.html.en | 2 docs/manual/mod/mod_unixd.html.fr.utf8 | 2 docs/manual/mod/mod_unixd.html.tr.utf8 | 2 docs/manual/mod/mod_userdir.html.en | 2 docs/manual/mod/mod_userdir.html.fr.utf8 | 2 docs/manual/mod/mod_userdir.html.ja.utf8 | 2 docs/manual/mod/mod_userdir.html.ko.euc-kr | 2 docs/manual/mod/mod_userdir.html.tr.utf8 | 2 docs/manual/mod/mod_usertrack.html.en | 2 docs/manual/mod/mod_usertrack.html.fr.utf8 | 2 docs/manual/mod/mod_version.html.en | 2 docs/manual/mod/mod_version.html.fr.utf8 | 2 docs/manual/mod/mod_version.html.ja.utf8 | 2 docs/manual/mod/mod_version.html.ko.euc-kr | 2 docs/manual/mod/mod_vhost_alias.html.en | 2 docs/manual/mod/mod_vhost_alias.html.fr.utf8 | 2 docs/manual/mod/mod_vhost_alias.html.tr.utf8 | 2 docs/manual/mod/mod_watchdog.html.en | 2 docs/manual/mod/mod_watchdog.html.fr.utf8 | 2 docs/manual/mod/mod_xml2enc.html.en | 2 docs/manual/mod/mod_xml2enc.html.fr.utf8 | 2 docs/manual/mod/module-dict.html.en | 2 docs/manual/mod/module-dict.html.fr.utf8 | 2 docs/manual/mod/module-dict.html.ja.utf8 | 2 docs/manual/mod/module-dict.html.ko.euc-kr | 2 docs/manual/mod/module-dict.html.tr.utf8 | 2 docs/manual/mod/mpm_common.html.de | 2 docs/manual/mod/mpm_common.html.en | 2 docs/manual/mod/mpm_common.html.fr.utf8 | 2 docs/manual/mod/mpm_common.html.ja.utf8 | 2 docs/manual/mod/mpm_common.html.tr.utf8 | 2 docs/manual/mod/mpm_netware.html.en | 2 docs/manual/mod/mpm_netware.html.fr.utf8 | 2 docs/manual/mod/mpm_winnt.html.de | 2 docs/manual/mod/mpm_winnt.html.en | 2 docs/manual/mod/mpm_winnt.html.fr.utf8 | 2 docs/manual/mod/mpm_winnt.html.ja.utf8 | 2 docs/manual/mod/mpmt_os2.html.en | 2 docs/manual/mod/mpmt_os2.html.fr.utf8 | 2 docs/manual/mod/overrides.html.en | 2 docs/manual/mod/overrides.html.fr.utf8 | 2 docs/manual/mod/prefork.html.de | 2 docs/manual/mod/prefork.html.en | 2 docs/manual/mod/prefork.html.fr.utf8 | 2 docs/manual/mod/prefork.html.ja.utf8 | 2 docs/manual/mod/prefork.html.tr.utf8 | 2 docs/manual/mod/quickreference.html.de | 411 +- docs/manual/mod/quickreference.html.en | 413 +- docs/manual/mod/quickreference.html.es | 413 +- docs/manual/mod/quickreference.html.fr.utf8 | 428 +- docs/manual/mod/quickreference.html.ja.utf8 | 409 +- docs/manual/mod/quickreference.html.ko.euc-kr | 409 +- docs/manual/mod/quickreference.html.tr.utf8 | 425 +- docs/manual/mod/quickreference.html.zh-cn.utf8 | 413 +- docs/manual/mod/worker.html.de | 2 docs/manual/mod/worker.html.en | 2 docs/manual/mod/worker.html.fr.utf8 | 2 docs/manual/mod/worker.html.ja.utf8 | 2 docs/manual/mod/worker.html.tr.utf8 | 2 docs/manual/mpm.html.de | 2 docs/manual/mpm.html.en | 2 docs/manual/mpm.html.es | 2 docs/manual/mpm.html.fr.utf8 | 2 docs/manual/mpm.html.ja.utf8 | 2 docs/manual/mpm.html.ko.euc-kr | 2 docs/manual/mpm.html.tr.utf8 | 2 docs/manual/mpm.html.zh-cn.utf8 | 2 docs/manual/new_features_2_0.html.de | 2 docs/manual/new_features_2_0.html.en | 2 docs/manual/new_features_2_0.html.fr.utf8 | 2 docs/manual/new_features_2_0.html.ja.utf8 | 2 docs/manual/new_features_2_0.html.ko.euc-kr | 2 docs/manual/new_features_2_0.html.pt-br | 2 docs/manual/new_features_2_0.html.tr.utf8 | 2 docs/manual/new_features_2_2.html.en | 2 docs/manual/new_features_2_2.html.fr.utf8 | 2 docs/manual/new_features_2_2.html.ko.euc-kr | 2 docs/manual/new_features_2_2.html.pt-br | 2 docs/manual/new_features_2_2.html.tr.utf8 | 2 docs/manual/new_features_2_4.html.en | 2 docs/manual/new_features_2_4.html.fr.utf8 | 2 docs/manual/new_features_2_4.html.tr.utf8 | 2 docs/manual/platform/ebcdic.html.en | 2 docs/manual/platform/ebcdic.html.ko.euc-kr | 2 docs/manual/platform/index.html.en | 2 docs/manual/platform/index.html.fr.utf8 | 2 docs/manual/platform/index.html.ko.euc-kr | 2 docs/manual/platform/index.html.zh-cn.utf8 | 2 docs/manual/platform/netware.html.en | 2 docs/manual/platform/netware.html.fr.utf8 | 2 docs/manual/platform/netware.html.ko.euc-kr | 2 docs/manual/platform/perf-hp.html.en | 2 docs/manual/platform/perf-hp.html.fr.utf8 | 2 docs/manual/platform/perf-hp.html.ko.euc-kr | 2 docs/manual/platform/rpm.html.en | 2 docs/manual/platform/rpm.html.fr.utf8 | 2 docs/manual/platform/win_compiling.html.en | 2 docs/manual/platform/win_compiling.html.fr.utf8 | 2 docs/manual/platform/win_compiling.html.ko.euc-kr | 2 docs/manual/platform/windows.html.en | 15 docs/manual/platform/windows.html.fr.utf8 | 15 docs/manual/platform/windows.html.ko.euc-kr | 2 docs/manual/programs/ab.html.en | 2 docs/manual/programs/ab.html.fr.utf8 | 2 docs/manual/programs/ab.html.ko.euc-kr | 2 docs/manual/programs/ab.html.tr.utf8 | 2 docs/manual/programs/apachectl.html.en | 2 docs/manual/programs/apachectl.html.fr.utf8 | 2 docs/manual/programs/apachectl.html.ko.euc-kr | 2 docs/manual/programs/apachectl.html.tr.utf8 | 2 docs/manual/programs/apxs.html.en | 2 docs/manual/programs/apxs.html.fr.utf8 | 2 docs/manual/programs/apxs.html.ko.euc-kr | 2 docs/manual/programs/apxs.html.tr.utf8 | 2 docs/manual/programs/configure.html.en | 2 docs/manual/programs/configure.html.fr.utf8 | 2 docs/manual/programs/configure.html.ko.euc-kr | 2 docs/manual/programs/configure.html.tr.utf8 | 2 docs/manual/programs/dbmmanage.html.en | 2 docs/manual/programs/dbmmanage.html.fr.utf8 | 2 docs/manual/programs/dbmmanage.html.ko.euc-kr | 2 docs/manual/programs/dbmmanage.html.tr.utf8 | 2 docs/manual/programs/fcgistarter.html.en | 2 docs/manual/programs/fcgistarter.html.fr.utf8 | 2 docs/manual/programs/fcgistarter.html.tr.utf8 | 2 docs/manual/programs/htcacheclean.html.en | 2 docs/manual/programs/htcacheclean.html.fr.utf8 | 2 docs/manual/programs/htcacheclean.html.ko.euc-kr | 2 docs/manual/programs/htcacheclean.html.tr.utf8 | 2 docs/manual/programs/htdbm.html.en | 2 docs/manual/programs/htdbm.html.fr.utf8 | 2 docs/manual/programs/htdbm.html.tr.utf8 | 2 docs/manual/programs/htdigest.html.en | 2 docs/manual/programs/htdigest.html.fr.utf8 | 2 docs/manual/programs/htdigest.html.ko.euc-kr | 2 docs/manual/programs/htdigest.html.tr.utf8 | 2 docs/manual/programs/htpasswd.html.en | 2 docs/manual/programs/htpasswd.html.fr.utf8 | 2 docs/manual/programs/htpasswd.html.ko.euc-kr | 2 docs/manual/programs/htpasswd.html.tr.utf8 | 2 docs/manual/programs/httpd.html.en | 2 docs/manual/programs/httpd.html.fr.utf8 | 2 docs/manual/programs/httpd.html.ko.euc-kr | 2 docs/manual/programs/httpd.html.tr.utf8 | 2 docs/manual/programs/httxt2dbm.html.en | 2 docs/manual/programs/httxt2dbm.html.fr.utf8 | 2 docs/manual/programs/httxt2dbm.html.tr.utf8 | 2 docs/manual/programs/index.html.en | 2 docs/manual/programs/index.html.es | 2 docs/manual/programs/index.html.fr.utf8 | 2 docs/manual/programs/index.html.ko.euc-kr | 2 docs/manual/programs/index.html.tr.utf8 | 2 docs/manual/programs/index.html.zh-cn.utf8 | 2 docs/manual/programs/log_server_status.html.en | 2 docs/manual/programs/log_server_status.html.fr.utf8 | 2 docs/manual/programs/logresolve.html.en | 2 docs/manual/programs/logresolve.html.fr.utf8 | 2 docs/manual/programs/logresolve.html.ko.euc-kr | 2 docs/manual/programs/logresolve.html.tr.utf8 | 2 docs/manual/programs/other.html.en | 2 docs/manual/programs/other.html.fr.utf8 | 2 docs/manual/programs/other.html.ko.euc-kr | 2 docs/manual/programs/other.html.tr.utf8 | 2 docs/manual/programs/rotatelogs.html.en | 2 docs/manual/programs/rotatelogs.html.fr.utf8 | 2 docs/manual/programs/rotatelogs.html.ko.euc-kr | 2 docs/manual/programs/rotatelogs.html.tr.utf8 | 2 docs/manual/programs/split-logfile.html.en | 2 docs/manual/programs/split-logfile.html.fr.utf8 | 2 docs/manual/programs/suexec.html.en | 2 docs/manual/programs/suexec.html.fr.utf8 | 2 docs/manual/programs/suexec.html.ko.euc-kr | 2 docs/manual/programs/suexec.html.tr.utf8 | 2 docs/manual/rewrite/access.html.en | 2 docs/manual/rewrite/access.html.fr.utf8 | 2 docs/manual/rewrite/advanced.html.en | 2 docs/manual/rewrite/advanced.html.fr.utf8 | 2 docs/manual/rewrite/avoid.html.en | 2 docs/manual/rewrite/avoid.html.fr.utf8 | 2 docs/manual/rewrite/flags.html.en | 12 docs/manual/rewrite/flags.html.fr.utf8 | 22 docs/manual/rewrite/htaccess.html.en | 2 docs/manual/rewrite/htaccess.html.fr.utf8 | 2 docs/manual/rewrite/index.html.en | 2 docs/manual/rewrite/index.html.fr.utf8 | 2 docs/manual/rewrite/index.html.tr.utf8 | 2 docs/manual/rewrite/index.html.zh-cn.utf8 | 2 docs/manual/rewrite/intro.html.en | 2 docs/manual/rewrite/intro.html.fr.utf8 | 2 docs/manual/rewrite/proxy.html.en | 2 docs/manual/rewrite/proxy.html.fr.utf8 | 2 docs/manual/rewrite/remapping.html.en | 2 docs/manual/rewrite/remapping.html.fr.utf8 | 2 docs/manual/rewrite/rewritemap.html.en | 2 docs/manual/rewrite/rewritemap.html.fr.utf8 | 2 docs/manual/rewrite/tech.html.en | 2 docs/manual/rewrite/tech.html.fr.utf8 | 2 docs/manual/rewrite/vhosts.html.en | 2 docs/manual/rewrite/vhosts.html.fr.utf8 | 2 docs/manual/sections.html.en | 2 docs/manual/sections.html.fr.utf8 | 2 docs/manual/sections.html.ja.utf8 | 2 docs/manual/sections.html.ko.euc-kr | 2 docs/manual/sections.html.tr.utf8 | 2 docs/manual/server-wide.html.en | 2 docs/manual/server-wide.html.fr.utf8 | 2 docs/manual/server-wide.html.ja.utf8 | 2 docs/manual/server-wide.html.ko.euc-kr | 2 docs/manual/server-wide.html.tr.utf8 | 2 docs/manual/sitemap.html.de | 3 docs/manual/sitemap.html.en | 3 docs/manual/sitemap.html.es | 3 docs/manual/sitemap.html.fr.utf8 | 3 docs/manual/sitemap.html.ja.utf8 | 3 docs/manual/sitemap.html.ko.euc-kr | 3 docs/manual/sitemap.html.tr.utf8 | 3 docs/manual/sitemap.html.zh-cn.utf8 | 3 docs/manual/socache.html.en | 2 docs/manual/socache.html.fr.utf8 | 2 docs/manual/ssl/index.html.en | 2 docs/manual/ssl/index.html.fr.utf8 | 2 docs/manual/ssl/index.html.ja.utf8 | 2 docs/manual/ssl/index.html.tr.utf8 | 2 docs/manual/ssl/index.html.zh-cn.utf8 | 2 docs/manual/ssl/ssl_compat.html.en | 2 docs/manual/ssl/ssl_compat.html.fr.utf8 | 2 docs/manual/ssl/ssl_faq.html.en | 2 docs/manual/ssl/ssl_faq.html.fr.utf8 | 2 docs/manual/ssl/ssl_howto.html.en | 2 docs/manual/ssl/ssl_howto.html.fr.utf8 | 2 docs/manual/ssl/ssl_intro.html.en | 2 docs/manual/ssl/ssl_intro.html.fr.utf8 | 2 docs/manual/ssl/ssl_intro.html.ja.utf8 | 2 docs/manual/stopping.html.de | 2 docs/manual/stopping.html.en | 2 docs/manual/stopping.html.es | 2 docs/manual/stopping.html.fr.utf8 | 2 docs/manual/stopping.html.ja.utf8 | 2 docs/manual/stopping.html.ko.euc-kr | 2 docs/manual/stopping.html.tr.utf8 | 2 docs/manual/style/common.dtd | 4 docs/manual/style/scripts/prettify.js | 2 docs/manual/style/scripts/prettify.min.js | 2 docs/manual/style/version.ent | 2 docs/manual/suexec.html.en | 2 docs/manual/suexec.html.fr.utf8 | 2 docs/manual/suexec.html.ja.utf8 | 2 docs/manual/suexec.html.ko.euc-kr | 2 docs/manual/suexec.html.tr.utf8 | 2 docs/manual/upgrading.html.en | 2 docs/manual/upgrading.html.fr.utf8 | 2 docs/manual/urlmapping.html.en | 2 docs/manual/urlmapping.html.fr.utf8 | 2 docs/manual/urlmapping.html.ja.utf8 | 2 docs/manual/urlmapping.html.ko.euc-kr | 2 docs/manual/urlmapping.html.tr.utf8 | 2 docs/manual/vhosts/details.html.en | 2 docs/manual/vhosts/details.html.fr.utf8 | 2 docs/manual/vhosts/details.html.ko.euc-kr | 2 docs/manual/vhosts/details.html.tr.utf8 | 2 docs/manual/vhosts/examples.html.en | 2 docs/manual/vhosts/examples.html.fr.utf8 | 2 docs/manual/vhosts/examples.html.ja.utf8 | 2 docs/manual/vhosts/examples.html.ko.euc-kr | 2 docs/manual/vhosts/examples.html.tr.utf8 | 2 docs/manual/vhosts/fd-limits.html.en | 2 docs/manual/vhosts/fd-limits.html.fr.utf8 | 2 docs/manual/vhosts/fd-limits.html.ja.utf8 | 2 docs/manual/vhosts/fd-limits.html.ko.euc-kr | 2 docs/manual/vhosts/fd-limits.html.tr.utf8 | 2 docs/manual/vhosts/index.html.de | 2 docs/manual/vhosts/index.html.en | 2 docs/manual/vhosts/index.html.fr.utf8 | 2 docs/manual/vhosts/index.html.ja.utf8 | 2 docs/manual/vhosts/index.html.ko.euc-kr | 2 docs/manual/vhosts/index.html.tr.utf8 | 2 docs/manual/vhosts/index.html.zh-cn.utf8 | 2 docs/manual/vhosts/ip-based.html.en | 2 docs/manual/vhosts/ip-based.html.fr.utf8 | 2 docs/manual/vhosts/ip-based.html.ja.utf8 | 2 docs/manual/vhosts/ip-based.html.ko.euc-kr | 2 docs/manual/vhosts/ip-based.html.tr.utf8 | 2 docs/manual/vhosts/mass.html.en | 2 docs/manual/vhosts/mass.html.fr.utf8 | 2 docs/manual/vhosts/mass.html.ko.euc-kr | 2 docs/manual/vhosts/mass.html.tr.utf8 | 2 docs/manual/vhosts/name-based.html.de | 2 docs/manual/vhosts/name-based.html.en | 2 docs/manual/vhosts/name-based.html.fr.utf8 | 2 docs/manual/vhosts/name-based.html.ja.utf8 | 2 docs/manual/vhosts/name-based.html.ko.euc-kr | 2 docs/manual/vhosts/name-based.html.tr.utf8 | 2 httpd.spec | 2 include/ap_config_auto.h.in | 4 include/ap_listen.h | 10 include/ap_mmn.h | 10 include/ap_mpm.h | 3 include/ap_release.h | 4 include/ap_socache.h | 7 include/httpd.h | 54 include/scoreboard.h | 7 modules/aaa/mod_authnz_ldap.c | 282 + modules/arch/unix/config5.m4 | 5 modules/arch/unix/mod_systemd.c | 62 modules/cache/mod_cache_socache.c | 8 modules/dav/fs/dbm.c | 4 modules/dav/main/mod_dav.c | 7 modules/dav/main/mod_dav.h | 5 modules/dav/main/util.c | 2 modules/filters/mod_ext_filter.c | 2 modules/generators/mod_asis.c | 2 modules/generators/mod_autoindex.c | 6 modules/generators/mod_status.c | 22 modules/http/byterange_filter.c | 43 modules/http/http_core.c | 4 modules/http/http_filters.c | 248 - modules/http/http_request.c | 2 modules/http2/h2_c1.c | 65 modules/http2/h2_config.c | 21 modules/http2/h2_config.h | 1 modules/http2/h2_mplx.c | 31 modules/http2/h2_mplx.h | 5 modules/http2/h2_proxy_session.c | 26 modules/http2/h2_request.c | 12 modules/http2/h2_request.h | 8 modules/http2/h2_session.c | 130 modules/http2/h2_session.h | 8 modules/http2/h2_stream.c | 78 modules/http2/h2_util.c | 51 modules/http2/h2_util.h | 11 modules/http2/h2_version.h | 4 modules/http2/h2_ws.c | 2 modules/http2/mod_proxy_http2.c | 12 modules/ldap/util_ldap.c | 4 modules/loggers/mod_log_config.c | 2 modules/lua/lua_request.c | 10 modules/lua/mod_lua.c | 19 modules/mappers/mod_rewrite.c | 623 ++-- modules/md/md.h | 6 modules/md/md_acme.c | 23 modules/md/md_acme.h | 1 modules/md/md_acme_authz.c | 3 modules/md/md_acme_drive.c | 18 modules/md/md_acme_drive.h | 2 modules/md/md_acme_order.c | 20 modules/md/md_acme_order.h | 3 modules/md/md_acmev2_drive.c | 44 modules/md/md_core.c | 6 modules/md/md_crypt.c | 81 modules/md/md_crypt.h | 1 modules/md/md_curl.c | 12 modules/md/md_ocsp.c | 2 modules/md/md_reg.c | 41 modules/md/md_status.c | 11 modules/md/md_store_fs.c | 12 modules/md/md_version.h | 4 modules/md/mod_md.c | 103 modules/md/mod_md_config.c | 43 modules/md/mod_md_config.h | 4 modules/md/mod_md_status.c | 6 modules/metadata/mod_headers.c | 16 modules/proxy/ajp_header.c | 2 modules/proxy/mod_proxy.c | 24 modules/proxy/mod_proxy.h | 1 modules/proxy/mod_proxy_ajp.c | 3 modules/proxy/mod_proxy_balancer.c | 18 modules/proxy/mod_proxy_fcgi.c | 101 modules/proxy/mod_proxy_ftp.c | 4 modules/proxy/proxy_util.c | 315 +- modules/session/mod_session_dbd.c | 12 modules/ssl/ssl_engine_config.c | 6 modules/ssl/ssl_engine_init.c | 18 modules/ssl/ssl_engine_kernel.c | 114 modules/ssl/ssl_engine_pphrase.c | 35 modules/ssl/ssl_engine_vars.c | 10 modules/ssl/ssl_private.h | 13 modules/tls/Makefile.in | 20 modules/tls/config2.m4 | 173 - modules/tls/mod_tls.c | 288 -- modules/tls/mod_tls.h | 19 modules/tls/tls_cache.c | 310 -- modules/tls/tls_cache.h | 63 modules/tls/tls_cert.c | 583 ---- modules/tls/tls_cert.h | 211 - modules/tls/tls_conf.c | 780 ----- modules/tls/tls_conf.h | 185 - modules/tls/tls_core.c | 1439 ---------- modules/tls/tls_core.h | 184 - modules/tls/tls_filter.c | 1017 ------- modules/tls/tls_filter.h | 90 modules/tls/tls_ocsp.c | 120 modules/tls/tls_ocsp.h | 47 modules/tls/tls_proto.c | 603 ---- modules/tls/tls_proto.h | 124 modules/tls/tls_util.c | 367 -- modules/tls/tls_util.h | 157 - modules/tls/tls_var.c | 397 -- modules/tls/tls_var.h | 39 modules/tls/tls_version.h | 39 server/core.c | 35 server/listen.c | 256 + server/mpm/event/event.c | 364 +- server/scoreboard.c | 16 server/util_expr_eval.c | 23 server/util_expr_parse.c | 2 server/util_script.c | 4 support/ab.c | 7 test/clients/h2ws.c | 3 test/modules/core/conftest.py | 5 test/modules/http1/conftest.py | 5 test/modules/http2/test_200_header_invalid.py | 61 test/modules/http2/test_202_trailer.py | 3 test/modules/http2/test_203_rfc9113.py | 3 test/modules/md/conftest.py | 7 test/modules/md/md_cert_util.py | 70 test/modules/md/md_env.py | 25 test/modules/md/pebble/pebble-eab.json.template | 12 test/modules/md/pebble/pebble.json.template | 17 test/modules/md/test_010_store_migrate.py | 2 test/modules/md/test_202_acmev2_regs.py | 2 test/modules/md/test_300_conf_validate.py | 82 test/modules/md/test_310_conf_store.py | 162 - test/modules/md/test_502_acmev2_drive.py | 64 test/modules/md/test_602_roundtrip.py | 18 test/modules/md/test_702_auto.py | 143 test/modules/md/test_710_profiles.py | 132 test/modules/md/test_720_wildcard.py | 22 test/modules/md/test_730_static.py | 48 test/modules/md/test_740_acme_errors.py | 6 test/modules/md/test_741_setup_errors.py | 30 test/modules/md/test_750_eab.py | 36 test/modules/md/test_751_sectigo.py | 14 test/modules/md/test_752_zerossl.py | 14 test/modules/md/test_780_tailscale.py | 10 test/modules/md/test_790_failover.py | 8 test/modules/md/test_800_must_staple.py | 12 test/modules/md/test_801_stapling.py | 120 test/modules/md/test_810_ec.py | 10 test/modules/md/test_820_locks.py | 10 test/modules/md/test_900_notify.py | 10 test/modules/md/test_901_message.py | 58 test/modules/md/test_910_cleanups.py | 4 test/modules/md/test_920_status.py | 39 test/modules/proxy/conftest.py | 5 test/modules/tls/conf.py | 68 test/modules/tls/conftest.py | 33 test/modules/tls/env.py | 193 - test/modules/tls/htdocs/a.mod-tls.test/index.json | 3 test/modules/tls/htdocs/a.mod-tls.test/vars.py | 56 test/modules/tls/htdocs/b.mod-tls.test/dir1/vars.py | 23 test/modules/tls/htdocs/b.mod-tls.test/index.json | 3 test/modules/tls/htdocs/b.mod-tls.test/resp-jitter.py | 23 test/modules/tls/htdocs/b.mod-tls.test/vars.py | 56 test/modules/tls/htdocs/index.html | 9 test/modules/tls/htdocs/index.json | 3 test/modules/tls/test_01_apache.py | 14 test/modules/tls/test_02_conf.py | 144 - test/modules/tls/test_03_sni.py | 89 test/modules/tls/test_04_get.py | 67 test/modules/tls/test_05_proto.py | 64 test/modules/tls/test_06_ciphers.py | 212 - test/modules/tls/test_07_alpn.py | 43 test/modules/tls/test_08_vars.py | 75 test/modules/tls/test_09_timeout.py | 43 test/modules/tls/test_10_session_id.py | 50 test/modules/tls/test_11_md.py | 37 test/modules/tls/test_12_cauth.py | 235 - test/modules/tls/test_13_proxy.py | 40 test/modules/tls/test_14_proxy_ssl.py | 123 test/modules/tls/test_15_proxy_tls.py | 94 test/modules/tls/test_16_proxy_mixed.py | 50 test/modules/tls/test_17_proxy_machine_cert.py | 70 test/pyhttpd/certs.py | 83 test/pyhttpd/conf/mime.types | 1 test/travis_Dockerfile_slapd.centos | 6 test/travis_before_linux.sh | 44 test/travis_run_linux.sh | 8 1046 files changed, 8324 insertions(+), 16234 deletions(-) diff -Nru apache2-2.4.62/.github/workflows/linux.yml apache2-2.4.65/.github/workflows/linux.yml --- apache2-2.4.62/.github/workflows/linux.yml 2024-06-17 08:20:54.000000000 +0000 +++ apache2-2.4.65/.github/workflows/linux.yml 2025-04-09 16:02:25.000000000 +0000 @@ -29,7 +29,7 @@ strategy: fail-fast: false matrix: - include: + include: # ------------------------------------------------------------------------- - name: Empty APLOGNO() test env: | @@ -53,6 +53,10 @@ - name: Event MPM, all-modules, mod_cgid fdpassing config: --enable-mods-shared=reallyall --with-mpm=event --disable-cgi --enable-cgid-fdpassing # ------------------------------------------------------------------------- + - name: Shared MPMs, all-modules, 64-bit ARM + config: --enable-mods-shared=reallyall --enable-mpms-shared=all + os: ubuntu-24.04-arm + # ------------------------------------------------------------------------- - name: Event MPM, all-modules, mod_cgid w/o fdpassing config: --enable-mods-shared=reallyall --with-mpm=event --disable-cgi # ------------------------------------------------------------------------- @@ -67,11 +71,11 @@ env: | TEST_ARGS=-order=random # ------------------------------------------------------------------------- - - name: GCC 10 maintainer-mode w/-Werror, install + VPATH + - name: GCC 12 maintainer-mode w/-Werror, install + VPATH config: --enable-mods-shared=reallyall --enable-maintainer-mode notest-cflags: -Werror -O2 env: | - CC=gcc-10 + CC=gcc-12 TEST_VPATH=1 TEST_INSTALL=1 SKIP_TESTING=1 @@ -153,6 +157,20 @@ TEST_ARGS="-defines LDAP" TESTS="t/modules/" # ------------------------------------------------------------------------- + - name: APR 1.7.x, APR-util 1.7.x, LDAP + config: --enable-mods-shared=reallyall + pkgs: ldap-utils + env: | + APR_VERSION=1.7.x + APU_VERSION=1.7.x + APU_CONFIG="--with-crypto --with-ldap" + TEST_MALLOC=1 + TEST_LDAP=1 + TEST_ARGS="-defines LDAP" + TESTS="t/modules/" + CLEAR_CACHE=1 + # ------------------------------------------------------------------------- + ### TODO: if: *condition_not_24x - name: APR trunk thread debugging config: --enable-mods-shared=reallyall --with-mpm=event env: | @@ -210,17 +228,6 @@ # TEST_MD=1 # ------------------------------------------------------------------------- ### TODO: if: *condition_not_24x - - name: MOD_TLS test suite - config: --enable-mods-shared=reallyall --with-mpm=event --enable-mpms-shared=event - pkgs: curl python3-pytest nghttp2-client python3-cryptography python3-requests python3-multipart python3-filelock python3-websockets cargo cbindgen - env: | - APR_VERSION=1.7.4 - APU_VERSION=1.6.3 - APU_CONFIG="--with-crypto" - RUSTLS_VERSION="v0.13.0" - NO_TEST_FRAMEWORK=1 - TEST_INSTALL=1 - TEST_MOD_TLS=1 # ------------------------------------------------------------------------- ### TODO if: *condition_not_24x ### TODO: Fails because :i386 packages are not being found. @@ -237,17 +244,21 @@ # APR_VERSION=1.7.3 # APU_VERSION=1.6.3 # APU_CONFIG="--with-crypto --with-ldap" - runs-on: ubuntu-latest + runs-on: ${{ matrix.os == '' && 'ubuntu-latest' || matrix.os }} timeout-minutes: 30 env: NOTEST_CFLAGS: ${{ matrix.notest-cflags }} CONFIG: ${{ matrix.config }} name: ${{ matrix.name }} steps: + # JOBID is used in the cache keys, created here as a hash of all + # properties of the environment, including the image OS version, + # compiler flags and any job-specific properties. - name: Set environment variables run: | echo "${{ matrix.env }}" >> $GITHUB_ENV - echo JOBID=`echo "${{ matrix.notest-cflags }} ${{ matrix.env }} ${{ matrix.config }}'"| md5sum - | sed 's/ .*//'` >> $GITHUB_ENV + echo JOBID=`echo "OS=$ImageOS ${{ matrix.notest-cflags }} ${{ matrix.env }} ${{ matrix.config }}" \ + | md5sum - | sed 's/ .*//'` >> $GITHUB_ENV # https://github.com/actions/runner-images/issues/9491#issuecomment-1989718917 - name: Workaround ASAN issue in Ubuntu 22.04 run: sudo sysctl vm.mmap_rnd_bits=28 @@ -258,7 +269,7 @@ cpanminus libtool-bin libapr1-dev libaprutil1-dev liblua5.3-dev libbrotli-dev libcurl4-openssl-dev libnghttp2-dev libjansson-dev libpcre2-dev gdb - perl-doc ${{ matrix.pkgs }} + perl-doc libsasl2-dev ${{ matrix.pkgs }} - uses: actions/checkout@v4 - name: Cache installed libraries uses: actions/cache@v4 @@ -285,5 +296,6 @@ if: failure() with: name: error_log-${{ env.JOBID }} - path: test/perl-framework/t/logs/error_log - + path: | + **/config.log + test/perl-framework/t/logs/error_log diff -Nru apache2-2.4.62/.github/workflows/windows.yml apache2-2.4.65/.github/workflows/windows.yml --- apache2-2.4.62/.github/workflows/windows.yml 1970-01-01 00:00:00.000000000 +0000 +++ apache2-2.4.65/.github/workflows/windows.yml 2024-08-04 11:21:30.000000000 +0000 @@ -0,0 +1,63 @@ +name: Windows + +on: + push: + branches: [ "*" ] + paths-ignore: + - 'docs/**' + - STATUS + - CHANGES + - changes-entries/* + pull_request: + branches: [ "trunk", "2.4.x" ] + paths-ignore: + - 'docs/**' + - STATUS + - CHANGES + - changes-entries/* + +jobs: + build: + strategy: + fail-fast: false + matrix: + include: + - name: Default + triplet: x64-windows + arch: x64 + build-type: Debug + generator: "Ninja" + + runs-on: windows-latest + timeout-minutes: 30 + name: ${{ matrix.name }} + env: + VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite" + steps: + - name: Export GitHub Actions cache environment variables + uses: actions/github-script@v7 + with: + script: | + core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); + core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); + + - name: Install dependencies + run: vcpkg install --triplet ${{ matrix.triplet }} apr[private-headers] apr-util pcre2 openssl + + - uses: actions/checkout@v3 + + - name: Configure CMake + shell: cmd + run: | + call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" -arch=${{ matrix.arch }} + cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} ^ + -G "${{ matrix.generator }}" ^ + -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake ^ + -DAPR_INCLUDE_DIR=C:/vcpkg/installed/${{ matrix.triplet }}/include ^ + "-DAPR_LIBRARIES=C:/vcpkg/installed/${{ matrix.triplet }}/lib/libapr-1.lib;C:/vcpkg/installed/${{ matrix.triplet }}/lib/libaprutil-1.lib" + + - name: Build + shell: cmd + run: | + call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" -arch=${{ matrix.arch }} + cmake --build ${{github.workspace}}/build --config ${{ matrix.build-type }} diff -Nru apache2-2.4.62/ABOUT_APACHE apache2-2.4.65/ABOUT_APACHE --- apache2-2.4.62/ABOUT_APACHE 2020-02-21 00:33:40.000000000 +0000 +++ apache2-2.4.65/ABOUT_APACHE 2025-01-07 15:00:40.000000000 +0000 @@ -128,7 +128,7 @@ you need to start by subscribing to the dev@httpd.apache.org mailing list. One warning though: traffic is high, 1000 to 1500 messages/month. To subscribe to the list, send an email to dev-subscribe@httpd.apache.org. -We recommend reading the list for a while before trying to jump in to +We recommend reading the list for a while before trying to jump in to development. NOTE: The developer mailing list (dev@httpd.apache.org) is not diff -Nru apache2-2.4.62/CHANGES apache2-2.4.65/CHANGES --- apache2-2.4.62/CHANGES 2024-07-11 13:58:12.000000000 +0000 +++ apache2-2.4.65/CHANGES 2025-07-11 01:20:00.000000000 +0000 @@ -1,6 +1,310 @@ -*- coding: utf-8 -*- +Changes with Apache 2.4.65 + +Changes with Apache 2.4.64 + + *) SECURITY: CVE-2025-53020: Apache HTTP Server: HTTP/2 DoS by + Memory Increase (cve.mitre.org) + Late Release of Memory after Effective Lifetime vulnerability in + Apache HTTP Server. + This issue affects Apache HTTP Server: from 2.4.17 up to 2.4.63. + Users are recommended to upgrade to version 2.4.64, which fixes + the issue. + Credits: Gal Bar Nahum + + *) SECURITY: CVE-2025-49812: Apache HTTP Server: mod_ssl TLS + upgrade attack (cve.mitre.org) + In some mod_ssl configurations on Apache HTTP Server versions + through to 2.4.63, an HTTP desynchronisation attack allows a + man-in-the-middle attacker to hijack an HTTP session via a TLS + upgrade. + Only configurations using "SSLEngine optional" to enable TLS + upgrades are affected. Users are recommended to upgrade to + version 2.4.64, which removes support for TLS upgrade. + Credits: Robert Merget (Technology Innovation Institute) + + *) SECURITY: CVE-2025-49630: Apache HTTP Server: mod_proxy_http2 + denial of service (cve.mitre.org) + In certain proxy configurations, a denial of service attack + against Apache HTTP Server versions 2.4.26 through to 2.4.63 + can be triggered by untrusted clients causing an assertion in + mod_proxy_http2. + Configurations affected are a reverse proxy is configured for an + HTTP/2 backend, with ProxyPreserveHost set to "on". + Credits: Anthony CORSIEZ + + *) SECURITY: CVE-2025-23048: Apache HTTP Server: mod_ssl access + control bypass with session resumption (cve.mitre.org) + In some mod_ssl configurations on Apache HTTP Server 2.4.35 + through to 2.4.62, an access control bypass by trusted clients + is possible using TLS 1.3 session resumption. + Configurations are affected when mod_ssl is configured for + multiple virtual hosts, with each restricted to a different set + of trusted client certificates (for example with a different + SSLCACertificateFile/Path setting). In such a case, a client + trusted to access one virtual host may be able to access another + virtual host, if SSLStrictSNIVHostCheck is not enabled in either + virtual host. + Credits: Sven Hebrok, Felix Cramer, Tim Storm, Maximilian Radoy, + and Juraj Somorovsky at Paderborn University + + *) SECURITY: CVE-2024-47252: Apache HTTP Server: mod_ssl error log + variable escaping (cve.mitre.org) + Insufficient escaping of user-supplied data in mod_ssl in Apache + HTTP Server 2.4.63 and earlier allows an untrusted SSL/TLS + client to insert escape characters into log files in some + configurations. + In a logging configuration where CustomLog is used with + "%{varname}x" or "%{varname}c" to log variables provided by + mod_ssl such as SSL_TLS_SNI, no escaping is performed by either + mod_log_config or mod_ssl and unsanitized data provided by the + client may appear in log files. + Credits: John Runyon + + *) SECURITY: CVE-2024-43394: Apache HTTP Server: SSRF on Windows + due to UNC paths (cve.mitre.org) + Server-Side Request Forgery (SSRF) in Apache HTTP Server on + Windows allows to potentially leak NTLM hashes to a malicious + server via + mod_rewrite or apache expressions that pass unvalidated request + input. + This issue affects Apache HTTP Server: from 2.4.0 through 2.4.63. + Note: The Apache HTTP Server Project will be setting a higher + bar for accepting vulnerability reports regarding SSRF via UNC + paths. + The server offers limited protection against administrators + directing the server to open UNC paths. + Windows servers should limit the hosts they will connect over + via SMB based on the nature of NTLM authentication. + Credits: Kainan Zhang (@4xpl0r3r) from Fortinet + + *) SECURITY: CVE-2024-43204: Apache HTTP Server: SSRF with + mod_headers setting Content-Type header (cve.mitre.org) + SSRF in Apache HTTP Server with mod_proxy loaded allows an + attacker to send outbound proxy requests to a URL controlled by + the attacker. Requires an unlikely configuration where + mod_headers is configured to modify the Content-Type request or + response header with a value provided in the HTTP request. + Users are recommended to upgrade to version 2.4.64 which fixes + this issue. + + *) SECURITY: CVE-2024-42516: Apache HTTP Server: HTTP response + splitting (cve.mitre.org) + HTTP response splitting in the core of Apache HTTP Server allows + an attacker who can manipulate the Content-Type response headers + of applications hosted or proxied by the server can split the + HTTP response. + This vulnerability was described as CVE-2023-38709 but the patch + included in Apache HTTP Server 2.4.59 did not address the issue. + Users are recommended to upgrade to version 2.4.64, which fixes + this issue. + Credits: xiaojunjie@安æ’ä¿¡æ¯æ­å·žå¸‚滨江区技能大师工作室 + + *) mod_proxy_ajp: Use iobuffersize set on worker level for the IO buffer + size. PR 69402 [Jari Ahonen ] + + *) mod_ssl: Drop $SSLKEYLOGFILE handling internally for OpenSSL 3.5 + builds which enable it in libssl natively. [Joe Orton] + + *) mod_asis: Fix the log level of the message AH01236. + Github #527 [Michael Kaufmann ] + + *) mod_session_dbd: ensure format used with SessionDBDCookieName and + SessionDBDCookieName2 are correct. + Github #503 [Thomas Meyer ] + + *) mod_headers: 'RequestHeader set|edit|edit_r Content-Type X' could + inadvertently modify the Content-Type _response_ header. Applies to + Content-Type only and likely to only affect static file responses. + [Eric Covener] + + *) mod_ssl: Remove warning over potential uninitialised value + for ssl protocol prior to protocol selection. + [Graham Leggett] + + *) mod_proxy: Reuse ProxyRemote connections when possible, like prior + to 2.4.59. [Jean-Frederic Clere, Yann Ylavic] + + *) mod_systemd: Add systemd socket activation support. [Paul Querna, + Jan Kaluza, Lubos Uhliarik , Joe Orton] + + *) mod_systemd: Log the SELinux context at startup if available and + enabled. [Joe Orton] + + *) mod_http2: update to version 2.0.32 + The code setting the connection window size was set wrong, + preventing `H2WindowSize` to work. + Fixed . + [Stefan Eissing, Michael Kaufmann] + + *) mod_http2: update to version 2.0.30 + - Fixed bug in handling over long response headers. When the 64 KB limit + of nghttp2 was exceeded, the request was not reset and the client was + left hanging, waiting for it. Now the stream is reset. + - Added new directive `H2MaxHeaderBlockLen` to set the limit on response + header sizes. + - Fixed handling of Timeout vs. KeepAliveTimeout when first request on a + connection was reset. + + *) mod_lua: Fix memory handling in LuaOutputFilter. PR 69590. + [Guillermo Grandes ] + + * mod_proxy_http2: revert r1912193 for detecting broken backend connections + as this interferes with backend selection who a node is unresponsive. + PR69624. + + *) mod_proxy_balancer: Fix a regression that caused stickysession keys no + longer be recognized if they are provided as query parameter in the URL. + PR 69443 [Ruediger Pluem] + + *) mod_md: update to version 2.5.2 + - Fixed TLS-ALPN-01 challenges when multiple `MDPrivateKeys` are specified + with EC keys before RSA ones. Fixes #377. [Stefan Eissing] + - Fixed missing newlines in the status page output. [Andreas Groth] + + *) mod_dav: Add API to expose DavBasePath setting. [Joe Orton] + + *) mod_md: update to version 2.5.1 + - Added support for ACME profiles with new directives MDProfile and + MDProfileMandatory. + - When installing a custom CA file via `MDCACertificateFile`, also set the + libcurl option CURLSSLOPT_NO_REVOKE that suppresses complains by Schannel + (when curl is linked with it) about missing CRL/OCSP in certificates. + - Fixed handling of corrupted httpd.json and added test 300_30 for it. + File is removed on error and written again. Fixes #369. + - Added explanation in log for how to proceed when md_store.json could not be + parsed and prevented the server start. + - restored fixed to #336 and #337 which got lost in a sync with Apache svn + - Add Issue Name/Uris to certificate information in md-status handler + - MDomains with static certificate files have MDRenewMode "manual", unless + "always" is configured. + + *) core: Report invalid Options= argument when parsing AllowOverride + directives. + Github #310 [Zhou Qingyang ] + + *) scoreboard/mod_http2: record durations of HTTP/2 requests. + PR 69579 [Pierre Brochard ] + +Changes with Apache 2.4.63 + + *) mod_dav: Update redirect-carefully example BrowserMatch config + to match more recent client versions. PR 66148, 67039. + [Michal Maloszewski , + Romain Tartière ] + + *) mod_cache_socache: Fix possible crash on error path. PR 69358. + [Ruediger Pluem] + + *) mod_ssl: Fail cleanly at startup if OpenSSL initialization fails. + [StephenWall] + + *) mod_md: update to version 2.4.31 + - Improved error reporting when waiting for ACME server to verify domains + or finalizing the order fails, e.g. times out. + - Increasing the timeouts to wait for ACME server to verify domain names + and issue the certificate from 30 seconds to 5 minutes. + - Change a log level from error to debug when Stapling is enabled but a + certificate carries no OCSP responder URL. + + *) mod_proxy_balancer: Fix the handling of the stickysession configuration + parameter by the balancer manager. PR 69510 + [Yutaka Tokunou ] + + *) Add the ldap-search option to mod_authnz_ldap, allowing authorization + to be based on arbitrary expressions that do not include the username. + Make sure that when ldap searches are too long, we explicitly log the + error. [Graham Leggett] + + *) mod_proxy: Honor parameters of ProxyPassMatch workers with substitution + in the host name or port. PR 69233. [Yann Ylavic] + + *) mod_log_config: Fix merging for the "LogFormat" directive. + PR 65222. [Michael Kaufmann ] + + *) mod_lua: Make r.ap_auth_type writable. PR 62497. + [Michael Osipov ] + + *) mod_md: update to version 2.4.29 + - Fixed HTTP-01 challenges to not carry a final newline, as some ACME + server fail to ignore it. [Michael Kaufmann (@mkauf)] + - Fixed missing label+newline in server-status plain text output when + MDStapling is enabled. + + *) mod_ssl: Restore support for loading PKCS#11 keys via ENGINE + without "SSLCryptoDevice" configured. [Joe Orton] + + *) mod_authnz_ldap: Fix possible memory corruption if the + AuthLDAPSubGroupAttribute directive is configured. [Joe Orton] + + *) mod_proxy_fcgi: Don't re-encode SCRIPT_FILENAME when set via SetHandler. + PR 69203. [Yann Ylavic] + + *) mod_rewrite, mod_proxy: mod_proxy to canonicalize rewritten [P] URLs, + including "unix:" ones. PR 69235, PR 69260. [Yann Ylavic, Ruediger Pluem] + + *) mod_rewrite: Error out in case a RewriteRule in directory context uses the + proxy, but mod_proxy is not loaded. PR 56264. + [Christophe Jaillet, Michael Streeter ] + + *) http: Remove support for Request-Range header sent by Navigator 2-3 and + MSIE 3. [Stefan Fritsch] + + *) mod_rewrite: Don't require [UNC] flag to preserve a leading // + added by applying the perdir prefix to the substitution. + [Ruediger Pluem, Eric Covener] + + *) Windows: Restore the ability to "Include" configuration files on UNC + paths. PR 69313 [Eric Covener] + + *) mod_proxy: Avoid AH01059 parsing error for SetHandler "unix:" URLs + in (incomplete fix in 2.4.62). PR 69160. [Yann Ylavic] + + *) mod_md: update to version 2.4.28 + - When the server starts, it looks for new, staged certificates to + activate. If the staged set of files in 'md/staging/' is messed + up, this could prevent further renewals to happen. Now, when the staging + set is present, but could not be activated due to an error, purge the + whole directory. [icing] + - Fix certificate retrieval on ACME renewal to not require a 'Location:' + header returned by the ACME CA. This was the way it was done in ACME + before it became an IETF standard. Let's Encrypt still supports this, + but other CAs do not. [icing] + - Restore compatibility with OpenSSL < 1.1. [ylavic] + + *) mod_tls: removed the experimental module. It now is availble standalone + from https://github.com/icing/mod_tls. The rustls provided API is not + stable and does not align with the httpd release cycle. + [Stefan Eissing] + + *) mod_rewrite: Better question mark tracking to avoid UnsafeAllow3F. + PR 69197. [Yann Ylavic, Eric Covener] + + *) mod_http2: Return connection monitoring to the event MPM when blocking + on client updates. [Stefan Eissing, Yann Ylavic] + Changes with Apache 2.4.62 + *) SECURITY: CVE-2024-40898: Apache HTTP Server: SSRF with + mod_rewrite in server/vhost context on Windows (cve.mitre.org) + SSRF in Apache HTTP Server on Windows with mod_rewrite in + server/vhost context, allows to potentially leak NTML hashes to + a malicious server via SSRF and malicious requests. + Users are recommended to upgrade to version 2.4.62 which fixes + this issue. + Credits: Smi1e (DBAPPSecurity Ltd.) + + *) SECURITY: CVE-2024-40725: Apache HTTP Server: source code + disclosure with handlers configured via AddType (cve.mitre.org) + A partial fix for CVE-2024-39884 in the core of Apache HTTP + Server 2.4.61 ignores some use of the legacy content-type based + configuration of handlers. "AddType" and similar configuration, + under some circumstances where files are requested indirectly, + result in source code disclosure of local content. For example, + PHP scripts may be served instead of interpreted. + Users are recommended to upgrade to version 2.4.62, which fixes + this issue. + *) mod_proxy: Fix canonicalisation and FCGI env (PATH_INFO, SCRIPT_NAME) for "balancer:" URLs set via SetHandler, also allowing for "unix:" sockets with BalancerMember(s). PR 69168. [Yann Ylavic] @@ -119,7 +423,7 @@ Credits: Marc Stern () *) mod_proxy: Fix DNS requests and connections closed before the - configured addressTTL. BZ 69126. [Yann Ylavic] + configured addressTTL. PR 69126. [Yann Ylavic] *) core: On Linux, log the real thread ID in error logs. [Joe Orton] @@ -1325,7 +1629,7 @@ [Yann Ylavic] *) mod_proxy: Fix flushing of THRESHOLD_MIN_WRITE data while tunneling. - BZ 65294. [Yann Ylavic] + PR 65294. [Yann Ylavic] *) core: Fix a regression that stripped the ETag header from 304 responses. PR 61820 [Ruediger Pluem, Roy T. Fielding] diff -Nru apache2-2.4.62/CMakeLists.txt apache2-2.4.65/CMakeLists.txt --- apache2-2.4.62/CMakeLists.txt 2023-08-29 07:23:10.000000000 +0000 +++ apache2-2.4.65/CMakeLists.txt 2025-06-10 10:51:35.000000000 +0000 @@ -21,12 +21,14 @@ INCLUDE(CheckSymbolExists) INCLUDE(CheckCSourceCompiles) +INCLUDE("build/build-modules-c.cmake") FIND_PACKAGE(LibXml2) FIND_PACKAGE(Lua51) FIND_PACKAGE(OpenSSL) FIND_PACKAGE(ZLIB) FIND_PACKAGE(CURL) +FIND_PACKAGE(PCRE2 COMPONENTS 8BIT) # Options for support libraries not supported by cmake-bundled FindFOO @@ -47,7 +49,10 @@ # PCRE names its libraries differently for debug vs. release builds. # We can't query our own CMAKE_BUILD_TYPE at configure time. # If the debug version exists in PREFIX/lib, default to that one. -IF(EXISTS "${CMAKE_INSTALL_PREFIX}/lib/pcre2-8d.lib") +IF(PCRE2_FOUND) + SET(default_pcre_libraries "PCRE2::8BIT") + SET(default_pcre_cflags "-DHAVE_PCRE2") +ELSEIF(EXISTS "${CMAKE_INSTALL_PREFIX}/lib/pcre2-8d.lib") SET(default_pcre_libraries ${CMAKE_INSTALL_PREFIX}/lib/pcre2-8d.lib) SET(default_pcre_cflags "-DHAVE_PCRE2") ELSEIF(EXISTS "${CMAKE_INSTALL_PREFIX}/lib/pcre2-8.lib") @@ -603,36 +608,29 @@ SET(install_bin_pdb) SET(install_modules) # special handling vs. other installed targets SET(install_modules_pdb) -SET(builtin_module_shortnames "win32 mpm_winnt http so") # core added automatically +SET(builtin_module_shortnames) +LIST(APPEND builtin_module_shortnames "win32" "mpm_winnt" "http" "so") # core added automatically SET(extra_builtin_modules) # the ones specified with -DWITH_MODULES= -IF(WITH_MODULES) # modules statically linked with the server - STRING(REPLACE "," ";" WITH_MODULE_LIST ${WITH_MODULES}) - FOREACH(static_mod ${WITH_MODULE_LIST}) - STRING(REGEX MATCH "[^/]+\\.c" mod_basename ${static_mod}) - STRING(REGEX REPLACE "^mod_(.*)\\.c" "\\1" mod_module_name ${mod_basename}) - SET(builtin_module_shortnames "${builtin_module_shortnames} ${mod_module_name}") - CONFIGURE_FILE(${static_mod} ${PROJECT_BINARY_DIR}/ COPYONLY) - SET(extra_builtin_modules ${extra_builtin_modules} ${PROJECT_BINARY_DIR}/${mod_basename}) - ENDFOREACH() - EXECUTE_PROCESS(COMMAND cmd /c "echo ${builtin_module_shortnames}| awk -f ${CMAKE_CURRENT_SOURCE_DIR}/build/build-modules-c.awk > ${PROJECT_BINARY_DIR}/modules.c" RESULT_VARIABLE rv) - IF(rv) - MESSAGE(FATAL_ERROR "build-modules-c.awk failed (${rv})") - ENDIF() -ELSE() - # no extra built-in modules; use the default modules.c to avoid the awk prereq - CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/os/win32/modules.c ${PROJECT_BINARY_DIR}/ COPYONLY) -ENDIF() +STRING(REPLACE "," ";" WITH_MODULE_LIST "${WITH_MODULES}") +FOREACH(static_mod ${WITH_MODULE_LIST}) + STRING(REGEX MATCH "[^/]+\\.c" mod_basename ${static_mod}) + STRING(REGEX REPLACE "^mod_(.*)\\.c" "\\1" mod_module_name ${mod_basename}) + LIST(APPEND builtin_module_shortnames "${mod_module_name}") + CONFIGURE_FILE(${static_mod} ${PROJECT_BINARY_DIR}/ COPYONLY) + SET(extra_builtin_modules ${extra_builtin_modules} ${PROJECT_BINARY_DIR}/${mod_basename}) +ENDFOREACH() + +generate_builtin_modules_c("${PROJECT_BINARY_DIR}/modules.c" "${builtin_module_shortnames}") # for easy reference from .dll/.so builds CONFIGURE_FILE(os/win32/BaseAddr.ref ${PROJECT_BINARY_DIR}/ COPYONLY) ADD_EXECUTABLE(gen_test_char server/gen_test_char.c) -GET_TARGET_PROPERTY(GEN_TEST_CHAR_EXE gen_test_char LOCATION) ADD_CUSTOM_COMMAND( COMMENT "Generating character tables, test_char.h, for current locale" DEPENDS gen_test_char - COMMAND ${GEN_TEST_CHAR_EXE} > ${PROJECT_BINARY_DIR}/test_char.h + COMMAND $ > ${PROJECT_BINARY_DIR}/test_char.h OUTPUT ${PROJECT_BINARY_DIR}/test_char.h ) ADD_CUSTOM_TARGET( diff -Nru apache2-2.4.62/Makefile.in apache2-2.4.65/Makefile.in --- apache2-2.4.62/Makefile.in 2022-11-29 13:19:07.000000000 +0000 +++ apache2-2.4.65/Makefile.in 2025-07-07 10:18:22.000000000 +0000 @@ -156,19 +156,19 @@ fi update-changes: - @for i in `find changes-entries -type f`; do \ + @find changes-entries -type f | while read -r i ; do \ cp CHANGES CHANGES.tmp ; \ - awk -v fname=$$i 'BEGIN{done = 0; active = 0} \ + awk -v fname="$$i" 'BEGIN{done = 0; active = 0} \ done == 0 && active == 0 && /^Changes with Apache /{ active = 1; print; next}; \ - /^( *\*|Changes with Apache )/ && active == 1 && done == 0{rec=$$0; while(getline 0){if (! ($$0 ~ /^ *$$/)){print}}printf "\n";print rec; active = 0; done = 1; next} //;' \ CHANGES.tmp > CHANGES ; \ rm CHANGES.tmp ; \ if [ -n "$(SVN)" ] ; then \ - if ! $(SVN) rm $$i 2>/dev/null ; then \ - $(RM) $$i ; \ + if ! $(SVN) rm "$$i" 2>/dev/null ; then \ + $(RM) "$$i" ; \ fi ; \ else \ - $(RM) $$i ; \ + $(RM) "$$i" ; \ fi ; \ done ; \ if [ -n "$(SVN)" ] ; then \ diff -Nru apache2-2.4.62/NOTICE apache2-2.4.65/NOTICE --- apache2-2.4.62/NOTICE 2024-04-04 13:52:54.000000000 +0000 +++ apache2-2.4.65/NOTICE 2025-01-23 20:50:10.000000000 +0000 @@ -1,5 +1,5 @@ Apache HTTP Server -Copyright 2024 The Apache Software Foundation. +Copyright 2025 The Apache Software Foundation. This product includes software developed at The Apache Software Foundation (https://www.apache.org/). diff -Nru apache2-2.4.62/README.cmake apache2-2.4.65/README.cmake --- apache2-2.4.62/README.cmake 2023-07-17 20:33:05.000000000 +0000 +++ apache2-2.4.65/README.cmake 2025-06-10 10:51:35.000000000 +0000 @@ -34,7 +34,6 @@ cmake version 3.1.3 or later is required to work with current OpenSSL releases. (OpenSSL is an optional prerequisite of httpd.) * Perl -* If the WITH_MODULES feature is used: awk * If using a command-line compiler: compiler and linker and related tools (Refer to the cmake documentation for more information.) @@ -100,8 +99,6 @@ 2. Make sure cmake and Perl are in PATH. Additionally, some backends require compile tools in PATH. (Hint: "Visual Studio Command Prompt") - In the unlikely event that you use -DWITH_MODULES, described below, make - sure awk is in PATH. 3. cmake -G "some backend, like 'NMake Makefiles'" -DCMAKE_INSTALL_PREFIX=d:/path/to/httpdinst diff -Nru apache2-2.4.62/build/apr_common.m4 apache2-2.4.65/build/apr_common.m4 --- apache2-2.4.62/build/apr_common.m4 2024-07-15 12:12:18.000000000 +0000 +++ apache2-2.4.65/build/apr_common.m4 2025-07-21 12:10:03.000000000 +0000 @@ -920,7 +920,7 @@ dnl should be available everywhere! cat > conftest.c < - int main() { return 0; } + int main(int argc, const char *argv[]) { return 0; } EOF MKDEP="true" for i in "$CC -MM" "$CC -M" "$CPP -MM" "$CPP -M" "cpp -M"; do diff -Nru apache2-2.4.62/build/build-modules-c.cmake apache2-2.4.65/build/build-modules-c.cmake --- apache2-2.4.62/build/build-modules-c.cmake 1970-01-01 00:00:00.000000000 +0000 +++ apache2-2.4.65/build/build-modules-c.cmake 2025-06-10 10:51:35.000000000 +0000 @@ -0,0 +1,27 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +function(generate_builtin_modules_c output_filename module_list) + list(PREPEND module_list "core") + + foreach(module ${module_list}) + string(APPEND MODULES_EXTERN "extern module ${module}_module;\n") + string(APPEND MODULES_PRELINK " &${module}_module,\n") + string(APPEND MODULES_SYMBOLS " {\"${module}_module\", &${module}_module},\n") + string(APPEND MODULES_PRELOAD " &${module}_module,\n") + endforeach() + + configure_file("build/modules.c.in" ${output_filename}) +endfunction() diff -Nru apache2-2.4.62/build/config.guess apache2-2.4.65/build/config.guess --- apache2-2.4.62/build/config.guess 2024-07-15 12:12:18.000000000 +0000 +++ apache2-2.4.65/build/config.guess 2025-07-21 12:10:03.000000000 +0000 @@ -1,14 +1,14 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2021 Free Software Foundation, Inc. +# Copyright 1992-2024 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268 # see below for rationale -timestamp='2021-06-03' +timestamp='2024-07-27' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or +# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but @@ -47,7 +47,7 @@ usage="\ Usage: $0 [OPTION] -Output the configuration name of the system \`$me' is run on. +Output the configuration name of the system '$me' is run on. Options: -h, --help print this help, then exit @@ -60,13 +60,13 @@ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2021 Free Software Foundation, Inc. +Copyright 1992-2024 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" -Try \`$me --help' for more information." +Try '$me --help' for more information." # Parse command line while test $# -gt 0 ; do @@ -102,8 +102,8 @@ # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. +# Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still +# use 'HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. @@ -123,7 +123,7 @@ dummy=$tmp/dummy case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in ,,) echo "int x;" > "$dummy.c" - for driver in cc gcc c89 c99 ; do + for driver in cc gcc c17 c99 c89 ; do if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then CC_FOR_BUILD=$driver break @@ -155,6 +155,9 @@ set_cc_for_build cat <<-EOF > "$dummy.c" + #if defined(__ANDROID__) + LIBC=android + #else #include #if defined(__UCLIBC__) LIBC=uclibc @@ -162,6 +165,8 @@ LIBC=dietlibc #elif defined(__GLIBC__) LIBC=gnu + #elif defined(__LLVM_LIBC__) + LIBC=llvm #else #include /* First heuristic to detect musl libc. */ @@ -169,6 +174,7 @@ LIBC=musl #endif #endif + #endif EOF cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` eval "$cc_set_libc" @@ -437,7 +443,7 @@ # This test works for both compilers. if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 @@ -459,7 +465,7 @@ UNAME_RELEASE=`uname -v` ;; esac - # Japanese Language versions have a version number like `4.1.3-JL'. + # Japanese Language versions have a version number like '4.1.3-JL'. SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` GUESS=sparc-sun-sunos$SUN_REL ;; @@ -628,7 +634,8 @@ sed 's/^ //' << EOF > "$dummy.c" #include - main() + int + main () { if (!__power_pc()) exit(1); @@ -712,7 +719,8 @@ #include #include - int main () + int + main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); @@ -904,7 +912,7 @@ fi ;; *:FreeBSD:*:*) - UNAME_PROCESSOR=`/usr/bin/uname -p` + UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in amd64) UNAME_PROCESSOR=x86_64 ;; @@ -929,6 +937,9 @@ i*:PW*:*) GUESS=$UNAME_MACHINE-pc-pw32 ;; + *:SerenityOS:*:*) + GUESS=$UNAME_MACHINE-pc-serenity + ;; *:Interix*:*) case $UNAME_MACHINE in x86) @@ -963,11 +974,37 @@ GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC ;; + x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-pc-managarm-mlibc" + ;; + *:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-unknown-managarm-mlibc" + ;; *:Minix:*:*) GUESS=$UNAME_MACHINE-unknown-minix ;; aarch64:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + set_cc_for_build + CPU=$UNAME_MACHINE + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + ABI=64 + sed 's/^ //' << EOF > "$dummy.c" + #ifdef __ARM_EABI__ + #ifdef __ARM_PCS_VFP + ABI=eabihf + #else + ABI=eabi + #endif + #endif +EOF + cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` + eval "$cc_set_abi" + case $ABI in + eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;; + esac + fi + GUESS=$CPU-unknown-linux-$LIBCABI ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be @@ -1033,7 +1070,16 @@ k1om:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; - loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*) + kvx:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:cos:*:*) + GUESS=$UNAME_MACHINE-unknown-cos + ;; + kvx:mbr:*:*) + GUESS=$UNAME_MACHINE-unknown-mbr + ;; + loongarch32:Linux:*:* | loongarch64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; m32r*:Linux:*:*) @@ -1148,16 +1194,27 @@ ;; x86_64:Linux:*:*) set_cc_for_build + CPU=$UNAME_MACHINE LIBCABI=$LIBC if test "$CC_FOR_BUILD" != no_compiler_found; then - if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_X32 >/dev/null - then - LIBCABI=${LIBC}x32 - fi + ABI=64 + sed 's/^ //' << EOF > "$dummy.c" + #ifdef __i386__ + ABI=x86 + #else + #ifdef __ILP32__ + ABI=x32 + #endif + #endif +EOF + cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` + eval "$cc_set_abi" + case $ABI in + x86) CPU=i686 ;; + x32) LIBCABI=${LIBC}x32 ;; + esac fi - GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI + GUESS=$CPU-pc-linux-$LIBCABI ;; xtensa*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC @@ -1177,7 +1234,7 @@ GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION ;; i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility + # If we were able to find 'uname', then EMX Unix compatibility # is probably installed. GUESS=$UNAME_MACHINE-pc-os2-emx ;; @@ -1318,7 +1375,7 @@ GUESS=ns32k-sni-sysv fi ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort # says GUESS=i586-unisys-sysv4 ;; @@ -1364,8 +1421,11 @@ BePC:Haiku:*:*) # Haiku running on Intel PC compatible. GUESS=i586-pc-haiku ;; - x86_64:Haiku:*:*) - GUESS=x86_64-unknown-haiku + ppc:Haiku:*:*) # Haiku running on Apple PowerPC + GUESS=powerpc-apple-haiku + ;; + *:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat) + GUESS=$UNAME_MACHINE-unknown-haiku ;; SX-4:SUPER-UX:*:*) GUESS=sx4-nec-superux$UNAME_RELEASE @@ -1522,6 +1582,9 @@ i*86:rdos:*:*) GUESS=$UNAME_MACHINE-pc-rdos ;; + i*86:Fiwix:*:*) + GUESS=$UNAME_MACHINE-pc-fiwix + ;; *:AROS:*:*) GUESS=$UNAME_MACHINE-unknown-aros ;; @@ -1534,6 +1597,9 @@ *:Unleashed:*:*) GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE ;; + *:Ironclad:*:*) + GUESS=$UNAME_MACHINE-unknown-ironclad + ;; esac # Do we have a guess based on uname results? @@ -1557,6 +1623,7 @@ #endif #endif #endif +int main () { #if defined (sony) diff -Nru apache2-2.4.62/build/config.sub apache2-2.4.65/build/config.sub --- apache2-2.4.62/build/config.sub 2024-07-15 12:12:18.000000000 +0000 +++ apache2-2.4.65/build/config.sub 2025-07-21 12:10:03.000000000 +0000 @@ -1,14 +1,14 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2021 Free Software Foundation, Inc. +# Copyright 1992-2024 Free Software Foundation, Inc. -# shellcheck disable=SC2006,SC2268 # see below for rationale +# shellcheck disable=SC2006,SC2268,SC2162 # see below for rationale -timestamp='2021-08-14' +timestamp='2024-05-27' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or +# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but @@ -76,13 +76,13 @@ version="\ GNU config.sub ($timestamp) -Copyright 1992-2021 Free Software Foundation, Inc. +Copyright 1992-2024 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" -Try \`$me --help' for more information." +Try '$me --help' for more information." # Parse command line while test $# -gt 0 ; do @@ -120,7 +120,6 @@ esac # Split fields of configuration type -# shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read field1 field2 field3 field4 <&2 + echo "Invalid configuration '$1': more than four components" >&2 exit 1 ;; *-*-*-*) @@ -142,10 +141,21 @@ # parts maybe_os=$field2-$field3 case $maybe_os in - nto-qnx* | linux-* | uclinux-uclibc* \ - | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ - | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ - | storm-chaos* | os2-emx* | rtmk-nova*) + cloudabi*-eabi* \ + | kfreebsd*-gnu* \ + | knetbsd*-gnu* \ + | kopensolaris*-gnu* \ + | linux-* \ + | managarm-* \ + | netbsd*-eabi* \ + | netbsd*-gnu* \ + | nto-qnx* \ + | os2-emx* \ + | rtmk-nova* \ + | storm-chaos* \ + | uclinux-gnu* \ + | uclinux-uclibc* \ + | windows-* ) basic_machine=$field1 basic_os=$maybe_os ;; @@ -160,8 +170,12 @@ esac ;; *-*) - # A lone config we happen to match not fitting any pattern case $field1-$field2 in + # Shorthands that happen to contain a single dash + convex-c[12] | convex-c3[248]) + basic_machine=$field2-convex + basic_os= + ;; decstation-3100) basic_machine=mips-dec basic_os= @@ -169,28 +183,88 @@ *-*) # Second component is usually, but not always the OS case $field2 in - # Prevent following clause from handling this valid os + # Do not treat sunos as a manufacturer sun*os*) basic_machine=$field1 basic_os=$field2 ;; - zephyr*) - basic_machine=$field1-unknown - basic_os=$field2 - ;; # Manufacturers - dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ - | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ - | unicom* | ibm* | next | hp | isi* | apollo | altos* \ - | convergent* | ncr* | news | 32* | 3600* | 3100* \ - | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ - | ultra | tti* | harris | dolphin | highlevel | gould \ - | cbm | ns | masscomp | apple | axis | knuth | cray \ - | microblaze* | sim | cisco \ - | oki | wec | wrs | winbond) + 3100* \ + | 32* \ + | 3300* \ + | 3600* \ + | 7300* \ + | acorn \ + | altos* \ + | apollo \ + | apple \ + | atari \ + | att* \ + | axis \ + | be \ + | bull \ + | cbm \ + | ccur \ + | cisco \ + | commodore \ + | convergent* \ + | convex* \ + | cray \ + | crds \ + | dec* \ + | delta* \ + | dg \ + | digital \ + | dolphin \ + | encore* \ + | gould \ + | harris \ + | highlevel \ + | hitachi* \ + | hp \ + | ibm* \ + | intergraph \ + | isi* \ + | knuth \ + | masscomp \ + | microblaze* \ + | mips* \ + | motorola* \ + | ncr* \ + | news \ + | next \ + | ns \ + | oki \ + | omron* \ + | pc533* \ + | rebel \ + | rom68k \ + | rombug \ + | semi \ + | sequent* \ + | siemens \ + | sgi* \ + | siemens \ + | sim \ + | sni \ + | sony* \ + | stratus \ + | sun \ + | sun[234]* \ + | tektronix \ + | tti* \ + | ultra \ + | unicom* \ + | wec \ + | winbond \ + | wrs) basic_machine=$field1-$field2 basic_os= ;; + zephyr*) + basic_machine=$field1-unknown + basic_os=$field2 + ;; *) basic_machine=$field1 basic_os=$field2 @@ -271,26 +345,6 @@ basic_machine=arm-unknown basic_os=cegcc ;; - convex-c1) - basic_machine=c1-convex - basic_os=bsd - ;; - convex-c2) - basic_machine=c2-convex - basic_os=bsd - ;; - convex-c32) - basic_machine=c32-convex - basic_os=bsd - ;; - convex-c34) - basic_machine=c34-convex - basic_os=bsd - ;; - convex-c38) - basic_machine=c38-convex - basic_os=bsd - ;; cray) basic_machine=j90-cray basic_os=unicos @@ -713,15 +767,26 @@ vendor=dec basic_os=tops20 ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) + delta | 3300 | delta-motorola | 3300-motorola | motorola-delta | motorola-3300) cpu=m68k vendor=motorola ;; - dpx2*) + # This used to be dpx2*, but that gets the RS6000-based + # DPX/20 and the x86-based DPX/2-100 wrong. See + # https://oldskool.silicium.org/stations/bull_dpx20.htm + # https://www.feb-patrimoine.com/english/bull_dpx2.htm + # https://www.feb-patrimoine.com/english/unix_and_bull.htm + dpx2 | dpx2[23]00 | dpx2[23]xx) cpu=m68k vendor=bull - basic_os=sysv3 + ;; + dpx2100 | dpx21xx) + cpu=i386 + vendor=bull + ;; + dpx20) + cpu=rs6000 + vendor=bull ;; encore | umax | mmax) cpu=ns32k @@ -836,18 +901,6 @@ next | m*-next) cpu=m68k vendor=next - case $basic_os in - openstep*) - ;; - nextstep*) - ;; - ns2*) - basic_os=nextstep2 - ;; - *) - basic_os=nextstep3 - ;; - esac ;; np1) cpu=np1 @@ -936,14 +989,13 @@ ;; *-*) - # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read cpu vendor <&2 + echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2 exit 1 ;; esac @@ -1301,11 +1491,12 @@ # Decode manufacturer-specific aliases for certain operating systems. -if test x$basic_os != x +if test x"$basic_os" != x then -# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just +# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just # set os. +obj= case $basic_os in gnu/linux*) kernel=linux @@ -1320,7 +1511,6 @@ os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` ;; *-*) - # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read kernel os <&2 + fi + ;; *) - echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 + echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 + exit 1 + ;; +esac + +case $obj in + aout* | coff* | elf* | pe*) + ;; + '') + # empty is fine + ;; + *) + echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2 + exit 1 + ;; +esac + +# Here we handle the constraint that a (synthetic) cpu and os are +# valid only in combination with each other and nowhere else. +case $cpu-$os in + # The "javascript-unknown-ghcjs" triple is used by GHC; we + # accept it here in order to tolerate that, but reject any + # variations. + javascript-ghcjs) + ;; + javascript-* | *-ghcjs) + echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2 exit 1 ;; esac # As a final step for OS-related things, validate the OS-kernel combination # (given a valid OS), if there is a kernel. -case $kernel-$os in - linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ - | linux-musl* | linux-relibc* | linux-uclibc* ) +case $kernel-$os-$obj in + linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ + | linux-mlibc*- | linux-musl*- | linux-newlib*- \ + | linux-relibc*- | linux-uclibc*- | linux-ohos*- ) + ;; + uclinux-uclibc*- | uclinux-gnu*- ) + ;; + managarm-mlibc*- | managarm-kernel*- ) ;; - uclinux-uclibc* ) + windows*-msvc*-) ;; - -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) + -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \ + | -uclibc*- ) # These are just libc implementations, not actual OSes, and thus # require a kernel. - echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 + echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2 exit 1 ;; - kfreebsd*-gnu* | kopensolaris*-gnu*) + -kernel*- ) + echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2 + exit 1 ;; - vxworks-simlinux | vxworks-simwindows | vxworks-spe) + *-kernel*- ) + echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2 + exit 1 ;; - nto-qnx*) + *-msvc*- ) + echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2 + exit 1 ;; - os2-emx) + kfreebsd*-gnu*- | knetbsd*-gnu*- | netbsd*-gnu*- | kopensolaris*-gnu*-) + ;; + vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) + ;; + nto-qnx*-) ;; - *-eabi* | *-gnueabi*) + os2-emx-) ;; - -*) + rtmk-nova-) + ;; + *-eabi*- | *-gnueabi*-) + ;; + none--*) + # None (no kernel, i.e. freestanding / bare metal), + # can be paired with an machine code file format + ;; + -*-) # Blank kernel with real OS is always fine. ;; - *-*) - echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 + --*) + # Blank kernel and OS with real machine code file format is always fine. + ;; + *-*-*) + echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2 exit 1 ;; esac @@ -1803,7 +2273,7 @@ *-riscix*) vendor=acorn ;; - *-sunos*) + *-sunos* | *-solaris*) vendor=sun ;; *-cnk* | *-aix*) @@ -1873,7 +2343,7 @@ ;; esac -echo "$cpu-$vendor-${kernel:+$kernel-}$os" +echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" exit # Local variables: diff -Nru apache2-2.4.62/build/ltmain.sh apache2-2.4.65/build/ltmain.sh --- apache2-2.4.62/build/ltmain.sh 2024-07-15 12:12:18.000000000 +0000 +++ apache2-2.4.65/build/ltmain.sh 2025-07-21 12:10:03.000000000 +0000 @@ -2,11 +2,11 @@ ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in ## by inline-source v2019-02-19.15 -# libtool (GNU libtool) 2.4.7 +# libtool (GNU libtool) 2.5.4 # Provide generalized library-building support services. # Written by Gordon Matzigkeit , 1996 -# Copyright (C) 1996-2019, 2021-2022 Free Software Foundation, Inc. +# Copyright (C) 1996-2019, 2021-2024 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. @@ -31,8 +31,8 @@ PROGRAM=libtool PACKAGE=libtool -VERSION=2.4.7 -package_revision=2.4.7 +VERSION=2.5.4 +package_revision=2.5.4 ## ------ ## @@ -72,11 +72,11 @@ # This is free software. There is NO warranty; not even for # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # -# Copyright (C) 2004-2019, 2021 Bootstrap Authors +# Copyright (C) 2004-2019, 2021, 2023-2024 Bootstrap Authors # # This file is dual licensed under the terms of the MIT license -# , and GPL version 2 or later -# . You must apply one of +# , and GPL version 2 or later +# . You must apply one of # these licenses when using or redistributing this software or any of # the files within it. See the URLs above, or the file `LICENSE` # included in the Bootstrap distribution for the full license texts. @@ -143,7 +143,7 @@ ' IFS="$sp $nl" -# There are apparently some retarded systems that use ';' as a PATH separator! +# There are apparently some systems that use ';' as a PATH separator! if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { @@ -589,7 +589,7 @@ # _G_HAVE_PLUSEQ_OP # Can be empty, in which case the shell is probed, "yes" if += is - # useable or anything else if it does not work. + # usable or anything else if it does not work. test -z "$_G_HAVE_PLUSEQ_OP" \ && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ && _G_HAVE_PLUSEQ_OP=yes @@ -739,7 +739,7 @@ # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. -# value retuned in "$func_basename_result" +# value returned in "$func_basename_result" # For efficiency, we do not delegate to the functions above but instead # duplicate the functionality here. eval 'func_dirname_and_basename () @@ -897,7 +897,7 @@ # While some portion of DIR does not yet exist... while test ! -d "$_G_directory_path"; do # ...make a list in topmost first order. Use a colon delimited - # list incase some portion of path contains whitespace. + # list in case some portion of path contains whitespace. _G_dir_list=$_G_directory_path:$_G_dir_list # If the last portion added has no slash in it, the list is done @@ -1536,11 +1536,11 @@ # This is free software. There is NO warranty; not even for # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # -# Copyright (C) 2010-2019, 2021 Bootstrap Authors +# Copyright (C) 2010-2019, 2021, 2023-2024 Bootstrap Authors # # This file is dual licensed under the terms of the MIT license -# , and GPL version 2 or later -# . You must apply one of +# , and GPL version 2 or later +# . You must apply one of # these licenses when using or redistributing this software or any of # the files within it. See the URLs above, or the file `LICENSE` # included in the Bootstrap distribution for the full license texts. @@ -2215,7 +2215,30 @@ # End: # Set a version string. -scriptversion='(GNU libtool) 2.4.7' +scriptversion='(GNU libtool) 2.5.4' + +# func_version +# ------------ +# Echo version message to standard output and exit. +func_version () +{ + $debug_cmd + + year=`date +%Y` + + cat < +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law. + +Originally written by Gordon Matzigkeit, 1996 +(See AUTHORS for complete contributor listing) +EOF + + exit $? +} # func_echo ARG... @@ -2238,18 +2261,6 @@ } -# func_warning ARG... -# ------------------- -# Libtool warnings are not categorized, so override funclib.sh -# func_warning with this simpler definition. -func_warning () -{ - $debug_cmd - - $warning_func ${1+"$@"} -} - - ## ---------------- ## ## Options parsing. ## ## ---------------- ## @@ -2261,19 +2272,23 @@ # Short help message in response to '-h'. usage_message="Options: - --config show all configuration variables - --debug enable verbose shell tracing - -n, --dry-run display commands without modifying any files - --features display basic configuration information and exit - --mode=MODE use operation mode MODE - --no-warnings equivalent to '-Wnone' - --preserve-dup-deps don't remove duplicate dependency libraries - --quiet, --silent don't print informational messages - --tag=TAG use configuration variables from tag TAG - -v, --verbose print more informational messages than default - --version print version information - -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] - -h, --help, --help-all print short, long, or detailed help message + --config show all configuration variables + --debug enable verbose shell tracing + -n, --dry-run display commands without modifying any files + --features display basic configuration information + --finish use operation '--mode=finish' + --mode=MODE use operation mode MODE + --no-finish don't update shared library cache + --no-quiet, --no-silent print default informational messages + --no-warnings equivalent to '-Wnone' + --preserve-dup-deps don't remove duplicate dependency libraries + --quiet, --silent don't print informational messages + --reorder-cache=DIRS reorder shared library cache for preferred DIRS + --tag=TAG use configuration variables from tag TAG + -v, --verbose print more informational messages than default + --version print version information + -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] + -h, --help, --help-all print short, long, or detailed help message " # Additional text appended to 'usage_message' in response to '--help'. @@ -2306,13 +2321,13 @@ compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) - version: $progname (GNU libtool) 2.4.7 + version: $progname $scriptversion automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` Report bugs to . -GNU libtool home page: . -General help using GNU software: ." +GNU libtool home page: . +General help using GNU software: ." exit 0 } @@ -2502,8 +2517,11 @@ opt_dry_run=false opt_help=false opt_mode= + opt_reorder_cache=false opt_preserve_dup_deps=false opt_quiet=false + opt_finishing=true + opt_warning= nonopt= preserve_args= @@ -2593,14 +2611,18 @@ clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error - *) func_error "invalid argument for $_G_opt" + *) func_error "invalid argument '$1' for $_G_opt" exit_cmd=exit - break ;; esac shift ;; + --no-finish) + opt_finishing=false + func_append preserve_args " $_G_opt" + ;; + --no-silent|--no-quiet) opt_quiet=false func_append preserve_args " $_G_opt" @@ -2616,6 +2638,24 @@ func_append preserve_args " $_G_opt" ;; + --reorder-cache) + opt_reorder_cache=true + shared_lib_dirs=$1 + if test -n "$shared_lib_dirs"; then + case $1 in + # Must begin with /: + /*) ;; + + # Catch anything else as an error (relative paths) + *) func_error "invalid argument '$1' for $_G_opt" + func_error "absolute paths are required for $_G_opt" + exit_cmd=exit + ;; + esac + fi + shift + ;; + --silent|--quiet) opt_quiet=: opt_verbose=false @@ -2652,6 +2692,18 @@ func_add_hook func_parse_options libtool_parse_options +# func_warning ARG... +# ------------------- +# Libtool warnings are not categorized, so override funclib.sh +# func_warning with this simpler definition. +func_warning () +{ + if $opt_warning; then + $debug_cmd + $warning_func ${1+"$@"} + fi +} + # libtool_validate_options [ARG]... # --------------------------------- @@ -2668,10 +2720,10 @@ # preserve --debug test : = "$debug_cmd" || func_append preserve_args " --debug" - case $host in + case $host_os in # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 - *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) + cygwin* | mingw* | windows* | pw32* | cegcc* | solaris2* | os2*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; @@ -3003,7 +3055,7 @@ # func_convert_core_file_wine_to_w32 ARG # Helper function used by file name conversion functions when $build is *nix, -# and $host is mingw, cygwin, or some other w32 environment. Relies on a +# and $host is mingw, windows, cygwin, or some other w32 environment. Relies on a # correctly configured wine environment available, with the winepath program # in $build's $PATH. # @@ -3035,9 +3087,10 @@ # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and -# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly -# configured wine environment available, with the winepath program in $build's -# $PATH. Assumes ARG has no leading or trailing path separator characters. +# $host is mingw, windows, cygwin, or some other w32 environment. Relies on a +# correctly configured wine environment available, with the winepath program +# in $build's $PATH. Assumes ARG has no leading or trailing path separator +# characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. @@ -3180,6 +3233,15 @@ # end func_convert_path_front_back_pathsep +# func_convert_delimited_path PATH ORIG_DELIMITER NEW_DELIMITER +# Replaces a delimiter for a given path. +func_convert_delimited_path () +{ + converted_path=`$ECHO "$1" | $SED "s#$2#$3#g"` +} +# end func_convert_delimited_path + + ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## @@ -3514,6 +3576,65 @@ } +# func_reorder_shared_lib_cache DIRS +# Reorder the shared library cache by unconfiguring previous shared library cache +# and configuring preferred search directories before previous search directories. +# Previous shared library cache: /usr/lib /usr/local/lib +# Preferred search directories: /tmp/testing +# Reordered shared library cache: /tmp/testing /usr/lib /usr/local/lib +func_reorder_shared_lib_cache () +{ + $debug_cmd + + case $host_os in + openbsd*) + get_search_directories=`PATH="$PATH:/sbin" ldconfig -r | $GREP "search directories" | $SED "s#.*search directories:\ ##g"` + func_convert_delimited_path "$get_search_directories" ':' '\ ' + save_search_directories=$converted_path + func_convert_delimited_path "$1" ':' '\ ' + + # Ensure directories exist + for dir in $converted_path; do + # Ensure each directory is an absolute path + case $dir in + /*) ;; + *) func_error "Directory '$dir' is not an absolute path" + exit $EXIT_FAILURE ;; + esac + # Ensure no trailing slashes + func_stripname '' '/' "$dir" + dir=$func_stripname_result + if test -d "$dir"; then + if test -n "$preferred_search_directories"; then + preferred_search_directories="$preferred_search_directories $dir" + else + preferred_search_directories=$dir + fi + else + func_error "Directory '$dir' does not exist" + exit $EXIT_FAILURE + fi + done + + PATH="$PATH:/sbin" ldconfig -U $save_search_directories + PATH="$PATH:/sbin" ldconfig -m $preferred_search_directories $save_search_directories + get_search_directories=`PATH="$PATH:/sbin" ldconfig -r | $GREP "search directories" | $SED "s#.*search directories:\ ##g"` + func_convert_delimited_path "$get_search_directories" ':' '\ ' + reordered_search_directories=$converted_path + + $ECHO "Original: $save_search_directories" + $ECHO "Reordered: $reordered_search_directories" + exit $EXIT_SUCCESS + ;; + *) + func_error "--reorder-cache is not supported for host_os=$host_os." + exit $EXIT_FAILURE + ;; + esac +} +# end func_reorder_shared_lib_cache + + # func_mode_compile arg... func_mode_compile () { @@ -3692,7 +3813,7 @@ # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in - cygwin* | mingw* | pw32* | os2* | cegcc*) + cygwin* | mingw* | windows* | pw32* | os2* | cegcc*) pic_mode=default ;; esac @@ -4086,6 +4207,12 @@ fi +# If option '--reorder-cache', reorder the shared library cache and exit. +if $opt_reorder_cache; then + func_reorder_shared_lib_cache $shared_lib_dirs +fi + + # func_mode_execute arg... func_mode_execute () { @@ -4270,7 +4397,7 @@ fi fi - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs" && $opt_finishing; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. @@ -4295,6 +4422,12 @@ for libdir in $libdirs; do $ECHO " $libdir" done + if test "false" = "$opt_finishing"; then + echo + echo "NOTE: finish_cmds were not executed during testing, so you must" + echo "manually run ldconfig to add a given test directory, LIBDIR, to" + echo "the search path for generated executables." + fi echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" @@ -4531,8 +4664,15 @@ func_append dir "$objdir" if test -n "$relink_command"; then + # Strip any trailing slash from the destination. + func_stripname '' '/' "$libdir" + destlibdir=$func_stripname_result + + func_stripname '' '/' "$destdir" + s_destdir=$func_stripname_result + # Determine the prefix the user has applied to our future dir. - inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` + inst_prefix_dir=`$ECHO "X$s_destdir" | $Xsed -e "s%$destlibdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that @@ -4569,7 +4709,7 @@ 'exit $?' tstripme=$stripme case $host_os in - cygwin* | mingw* | pw32* | cegcc*) + cygwin* | mingw* | windows* | pw32* | cegcc*) case $realname in *.dll.a) tstripme= @@ -4682,7 +4822,7 @@ # Do a test to see if this is really a libtool program. case $host in - *cygwin* | *mingw*) + *cygwin* | *mingw* | *windows*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result @@ -4910,7 +5050,7 @@ $RM $export_symbols eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in - *cygwin* | *mingw* | *cegcc* ) + *cygwin* | *mingw* | *windows* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; @@ -4922,7 +5062,7 @@ eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in - *cygwin* | *mingw* | *cegcc* ) + *cygwin* | *mingw* | *windows* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; @@ -4936,7 +5076,7 @@ func_basename "$dlprefile" name=$func_basename_result case $host in - *cygwin* | *mingw* | *cegcc* ) + *cygwin* | *mingw* | *windows* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" @@ -4962,8 +5102,16 @@ eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | - $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + case $host in + i[3456]86-*-mingw32*) + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + ;; + *) + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/__nm_//' >> '$nlist'" + ;; + esac } else # not an import lib $opt_dry_run || { @@ -5111,7 +5259,7 @@ # Transform the symbol file into the correct name. symfileobj=$output_objdir/${my_outputname}S.$objext case $host in - *cygwin* | *mingw* | *cegcc* ) + *cygwin* | *mingw* | *windows* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` @@ -5187,7 +5335,7 @@ *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | - $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64|pe-aarch64)' >/dev/null; then case $nm_interface in "MS dumpbin") if func_cygming_ms_implib_p "$1" || @@ -5454,7 +5602,7 @@ # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to -# incorporate the script contents within a cygwin/mingw +# incorporate the script contents within a cygwin/mingw/windows # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. @@ -5462,7 +5610,7 @@ # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory where it is stored is -# the $objdir directory. This is a cygwin/mingw-specific +# the $objdir directory. This is a cygwin/mingw/windows-specific # behavior. func_emit_wrapper () { @@ -5587,7 +5735,7 @@ " case $host in # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2* | *-cegcc*) + *-*-mingw* | *-*-windows* | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 @@ -5655,7 +5803,7 @@ file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done - # Usually 'no', except on cygwin/mingw when embedded into + # Usually 'no', except on cygwin/mingw/windows when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then @@ -5787,7 +5935,7 @@ #endif #include #include -#ifdef _MSC_VER +#if defined _WIN32 && !defined __GNUC__ # include # include # include @@ -5812,7 +5960,7 @@ /* declarations of non-ANSI functions */ #if defined __MINGW32__ # ifdef __STRICT_ANSI__ -int _putenv (const char *); +_CRTIMP int __cdecl _putenv (const char *); # endif #elif defined __CYGWIN__ # ifdef __STRICT_ANSI__ @@ -6010,7 +6158,7 @@ { EOF case $host in - *mingw* | *cygwin* ) + *mingw* | *windows* | *cygwin* ) # make stdout use "unix" line endings echo " setmode(1,_O_BINARY);" ;; @@ -6029,7 +6177,7 @@ { /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX namespace, but it is not one of the ones we know about and - have already dealt with, above (inluding dump-script), then + have already dealt with, above (including dump-script), then report an error. Otherwise, targets might begin to believe they are allowed to use options in the LTWRAPPER_OPTION_PREFIX namespace. The first time any user complains about this, we'll @@ -6113,7 +6261,7 @@ EOF case $host_os in - mingw*) + mingw* | windows*) cat <<"EOF" { char* p; @@ -6155,7 +6303,7 @@ EOF case $host_os in - mingw*) + mingw* | windows*) cat <<"EOF" /* execv doesn't actually work on mingw as expected on unix */ newargz = prepare_spawn (newargz); @@ -6574,7 +6722,7 @@ EOF case $host_os in - mingw*) + mingw* | windows*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). @@ -6749,7 +6897,7 @@ $debug_cmd case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # what system we are compiling for in order to pass an extra @@ -6773,6 +6921,7 @@ finalize_command=$nonopt compile_rpath= + compile_rpath_tail= finalize_rpath= compile_shlibpath= finalize_shlibpath= @@ -6813,10 +6962,12 @@ xrpath= perm_rpath= temp_rpath= + temp_rpath_tail= thread_safe=no vinfo= vinfo_number=no weak_libs= + rpath_arg= single_module=$wl-single_module func_infer_tag $base_compile @@ -7079,7 +7230,7 @@ case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) - func_fatal_error "only absolute run-paths are allowed" + func_fatal_error "argument to -rpath is not absolute: $arg" ;; esac if test rpath = "$prev"; then @@ -7255,7 +7406,7 @@ ;; esac case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; @@ -7275,7 +7426,7 @@ -l*) if test X-lc = "X$arg" || test X-lm = "X$arg"; then case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) + *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; @@ -7283,7 +7434,7 @@ # These systems don't actually have a C library (as such) test X-lc = "X$arg" && continue ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*) + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*) # Do not include libc due to us having libc/libc_r. test X-lc = "X$arg" && continue ;; @@ -7303,7 +7454,7 @@ esac elif test X-lc_r = "X$arg"; then case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*) + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*) # Do not include libc_r directly, use -pthread flag. continue ;; @@ -7326,7 +7477,8 @@ # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. - -model|-arch|-isysroot|--sysroot) + # -q