property: correctly set the has optional flag when merging property lists
authorPauli <paul.dale@oracle.com>
Mon, 15 Jun 2020 00:07:50 +0000 (10:07 +1000)
committerPauli <paul.dale@oracle.com>
Tue, 23 Jun 2020 11:44:47 +0000 (21:44 +1000)
Reviewed-by: Tomas Mraz <tmraz@fedoraproject.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/12123)

crypto/property/property_parse.c

index 21f78c0..41a5a05 100644 (file)
@@ -568,6 +568,7 @@ OSSL_PROPERTY_LIST *ossl_property_merge(const OSSL_PROPERTY_LIST *a,
     if (r == NULL)
         return NULL;
 
     if (r == NULL)
         return NULL;
 
+    r->has_optional = 0;
     for (i = j = n = 0; i < a->n || j < b->n; n++) {
         if (i >= a->n) {
             copy = &bp[j++];
     for (i = j = n = 0; i < a->n || j < b->n; n++) {
         if (i >= a->n) {
             copy = &bp[j++];
@@ -581,6 +582,7 @@ OSSL_PROPERTY_LIST *ossl_property_merge(const OSSL_PROPERTY_LIST *a,
             copy = &bp[j++];
         }
         memcpy(r->properties + n, copy, sizeof(r->properties[0]));
             copy = &bp[j++];
         }
         memcpy(r->properties + n, copy, sizeof(r->properties[0]));
+        r->has_optional |= copy->optional;
     }
     r->n = n;
     if (n != t)
     }
     r->n = n;
     if (n != t)