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);