From 9f7f3b2034546d90860862f669ae6b801e23ed67 Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Tue, 24 Oct 2023 20:20:05 +0200 Subject: [PATCH] Fix incorrect dtor for persistent sdl->encoders Closes GH-12515. --- NEWS | 1 + ext/soap/php_sdl.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 45ed412eef1..9d8e4f553ff 100644 --- a/NEWS +++ b/NEWS @@ -35,6 +35,7 @@ PHP NEWS . Fix incorrect uri check in SOAP caching. (nielsdos) . Fix segfault and assertion failure with refcounted props and arrays. (nielsdos) + . Fix potential crash with an edge case of persistent encoders. (nielsdos) - Streams: . Fixed bug #75708 (getimagesize with "&$imageinfo" fails on StreamWrappers). diff --git a/ext/soap/php_sdl.c b/ext/soap/php_sdl.c index e7ea1123178..038515087fa 100644 --- a/ext/soap/php_sdl.c +++ b/ext/soap/php_sdl.c @@ -155,7 +155,7 @@ encodePtr get_encoder(sdlPtr sdl, const char *ns, const char *type) } if (sdl->encoders == NULL) { sdl->encoders = pemalloc(sizeof(HashTable), sdl->is_persistent); - zend_hash_init(sdl->encoders, 0, NULL, delete_encoder, sdl->is_persistent); + zend_hash_init(sdl->encoders, 0, NULL, sdl->is_persistent ? delete_encoder_persistent : delete_encoder, sdl->is_persistent); } zend_hash_str_update_ptr(sdl->encoders, nscat, len, new_enc); enc = new_enc;