Commit a1872a7e5d for openssl.org
commit a1872a7e5d0531b5e8812f3bd5a74cf16e56e1ad
Author: Greensi7 <adam.tabak04@gmail.com>
Date: Thu Sep 10 18:19:44 2026 +0200
Fix inconsistent state on LHASH insertion failure
If lh_CONF_VALUE_insert() fails in _CONF_add_string() then new
CONF value is still left in stack. This can prevent
proper duplicate field replacement causing multiple values
with same field name to stay on stack.
Assisted-by: ChatGPT:gpt-5.6
Reviewed-by: Nikola Pajkovsky <nikolap@openssl.org>
Reviewed-by: Norbert Pocs <norbertp@openssl.org>
Merge-date: Fri Oct 2 08:45:38 2026
Merged-from: https://github.com/openssl/openssl/pull/32792
diff --git a/crypto/conf/conf_api.c b/crypto/conf/conf_api.c
index 0e43990811..01bb1a4586 100644
--- a/crypto/conf/conf_api.c
+++ b/crypto/conf/conf_api.c
@@ -54,6 +54,11 @@ int _CONF_add_string(CONF *conf, CONF_VALUE *section, CONF_VALUE *value)
return 0;
v = lh_CONF_VALUE_insert(conf->data, value);
+ if (lh_CONF_VALUE_error(conf->data)) {
+ (void)sk_CONF_VALUE_pop(ts);
+ return 0;
+ }
+
if (v != NULL) {
(void)sk_CONF_VALUE_delete_ptr(ts, v);
OPENSSL_free(v->name);