Commit 6c1b05c4290 for php.net

commit 6c1b05c429015abde24a5024965dde97a7df1cc7
Merge: d92b5f9d1cf 8da53b5d31c
Author: Ilia Alshanetsky <ilia@ilia.ws>
Date:   Mon Jun 29 10:37:22 2026 -0400

    Merge branch 'PHP-8.4' into PHP-8.5

    * PHP-8.4:
      Fix GH-18173: ext/hash relies on implementation-defined malloc alignment

diff --cc NEWS
index 89f41d2bb2d,86ef47098f7..dc37bcf555d
--- a/NEWS
+++ b/NEWS
@@@ -1,20 -1,11 +1,24 @@@
  PHP                                                                        NEWS
  |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 -?? ??? ????, PHP 8.4.24
 +?? ??? ????, PHP 8.5.9
 +
 +- Core:
 +  . Fixed bug GH-22290 (AST pretty printing does not correctly handle strings
 +    containing NUL). (iliaal)
 +  . Fixed bug GH-22206 (missing return in global register detection).
 +    (P3p111n0)

+ - Hash:
+   . Fixed bug GH-18173 (ext/hash relies on implementation-defined malloc
+     alignment). (iliaal)
+
 +- Opcache:
 +  . Fixed bug GH-22158 (Tracing JIT dispatches the observer begin handler
 +    through the wrong run_time_cache slot on megamorphic calls). (ptondereau,
 +    iliaal)
 +  . Fixed bug GH-22443 (Tracing JIT SIGSEGV on megamorphic dynamic calls from
 +    an undereferenced run_time_cache map_ptr offset). (iliaal)
 +
  - Intl:
    . Fixed Locale::lookup() and locale_lookup() to return NULL instead of the
      fallback locale when a language tag cannot be canonicalized. (Weilin Du)
diff --cc ext/hash/hash.c
index ec5391a6230,1c90f4821f1..6e8bc49d34d
--- a/ext/hash/hash.c
+++ b/ext/hash/hash.c
@@@ -536,9 -540,9 +536,9 @@@ static void php_hash_do_hash_hmac
  		}
  		php_stream_close(stream);
  		if (n < 0) {
- 			efree(context);
+ 			php_hash_free_context(ops, context);
  			efree(K);
 -			zend_string_release(digest);
 +			zend_string_efree(digest);
  			RETURN_FALSE;
  		}

diff --cc ext/hash/hash_md.c
index dd299e69589,996e71ec9ff..4af74871fb0
--- a/ext/hash/hash_md.c
+++ b/ext/hash/hash_md.c
@@@ -44,10 -45,11 +45,11 @@@ const php_hash_ops php_hash_md4_ops =
  	16,
  	64,
  	sizeof(PHP_MD4_CTX),
- 	1
+ 	1,
+ 	0
  };

 -static int php_md2_unserialize(php_hashcontext_object *hash, zend_long magic, const zval *zv);
 +static hash_spec_result php_md2_unserialize(php_hashcontext_object *hash, zend_long magic, const zval *zv);

  const php_hash_ops php_hash_md2_ops = {
  	"md2",