From 3529b7e9a4129a9b907d6afb06bc384507e197fd Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Sun, 1 Jun 2025 18:45:04 +0200 Subject: [PATCH] Fix missing empty string checks in ext/enchant The library requires the tags to be non-empty, and also requires the ordering to be non-empty. For the tags, otherwise, assertion failures can be observed. --- ext/enchant/enchant.c | 15 ++++++++++++ .../tests/broker_dict_exists_empty.phpt | 17 ++++++++++++++ .../tests/broker_set_ordering_empty.phpt | 23 +++++++++++++++++++ 3 files changed, 55 insertions(+) create mode 100644 ext/enchant/tests/broker_dict_exists_empty.phpt create mode 100644 ext/enchant/tests/broker_set_ordering_empty.phpt diff --git a/ext/enchant/enchant.c b/ext/enchant/enchant.c index d1d9ee60c440a..eedb49b69e8f9 100644 --- a/ext/enchant/enchant.c +++ b/ext/enchant/enchant.c @@ -529,6 +529,11 @@ PHP_FUNCTION(enchant_broker_dict_exists) PHP_ENCHANT_GET_BROKER; + if (taglen == 0) { + zend_argument_must_not_be_empty_error(2); + RETURN_THROWS(); + } + RETURN_BOOL(enchant_broker_dict_exists(pbroker->pbroker, tag)); } /* }}} */ @@ -554,6 +559,16 @@ PHP_FUNCTION(enchant_broker_set_ordering) PHP_ENCHANT_GET_BROKER; + if (ptaglen == 0) { + zend_argument_must_not_be_empty_error(2); + RETURN_THROWS(); + } + + if (porderinglen == 0) { + zend_argument_must_not_be_empty_error(3); + RETURN_THROWS(); + } + enchant_broker_set_ordering(pbroker->pbroker, ptag, pordering); RETURN_TRUE; } diff --git a/ext/enchant/tests/broker_dict_exists_empty.phpt b/ext/enchant/tests/broker_dict_exists_empty.phpt new file mode 100644 index 0000000000000..ce4a2ae436251 --- /dev/null +++ b/ext/enchant/tests/broker_dict_exists_empty.phpt @@ -0,0 +1,17 @@ +--TEST-- +enchant_broker_dict_exists() function - empty tag +--EXTENSIONS-- +enchant +--FILE-- +getMessage(), "\n"; +} +echo "Done\n"; +?> +--EXPECT-- +enchant_broker_dict_exists(): Argument #2 ($tag) must not be empty +Done diff --git a/ext/enchant/tests/broker_set_ordering_empty.phpt b/ext/enchant/tests/broker_set_ordering_empty.phpt new file mode 100644 index 0000000000000..f0df14dd74d67 --- /dev/null +++ b/ext/enchant/tests/broker_set_ordering_empty.phpt @@ -0,0 +1,23 @@ +--TEST-- +enchant_broker_set_ordering() function - empty tag +--EXTENSIONS-- +enchant +--FILE-- +getMessage(), "\n"; +} +try { + enchant_broker_set_ordering($broker, '*', ''); +} catch (ValueError $e) { + echo $e->getMessage(), "\n"; +} +echo "Done\n"; +?> +--EXPECT-- +enchant_broker_set_ordering(): Argument #2 ($tag) must not be empty +enchant_broker_set_ordering(): Argument #3 ($ordering) must not be empty +Done