property: create property names more eagerly.
authorPauli <pauli@openssl.org>
Mon, 10 May 2021 23:48:22 +0000 (09:48 +1000)
committerPauli <pauli@openssl.org>
Wed, 12 May 2021 08:19:52 +0000 (18:19 +1000)
User defined property names were not created before the first fetch.  The
rationale for this was to only maintain the user names defined by providers.
This was intended to prevent malicious memory use attacks.

Not being able to specify a default query before the first fetch is wrong.  This
changes the behaviour of the property query parsing to always create property
names.

Fixes #15218

Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15222)

crypto/property/property_parse.c

index a41d6331b1595d4ea8cb43bfcb3e1cc8c320dd58..dfae76518f1b35d0e0445a10718f1606c892661b 100644 (file)
@@ -407,12 +407,12 @@ OSSL_PROPERTY_LIST *ossl_parse_query(OSSL_LIB_CTX *ctx, const char *s,
         if (match_ch(&s, '-')) {
             prop->oper = PROPERTY_OVERRIDE;
             prop->optional = 0;
-            if (!parse_name(ctx, &s, 0, &prop->name_idx))
+            if (!parse_name(ctx, &s, 1, &prop->name_idx))
                 goto err;
             goto skip_value;
         }
         prop->optional = match_ch(&s, '?');
-        if (!parse_name(ctx, &s, 0, &prop->name_idx))
+        if (!parse_name(ctx, &s, 1, &prop->name_idx))
             goto err;
 
         if (match_ch(&s, '=')) {