]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
QUIC UINT_SET: Fix regression after list refactor
authorHugo Landau <hlandau@openssl.org>
Thu, 27 Jul 2023 14:55:34 +0000 (15:55 +0100)
committerHugo Landau <hlandau@openssl.org>
Thu, 10 Aug 2023 17:19:50 +0000 (18:19 +0100)
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/21565)

ssl/quic/uint_set.c

index 9d0440b42361e9a9a765c6afa9b6552913a22eb8..3bcfdcafd0553edfc4909c26cfc6d81766703abc 100644 (file)
@@ -277,7 +277,7 @@ int ossl_uint_set_remove(UINT_SET *s, const UINT_RANGE *range)
              */
             ossl_list_uint_set_remove(s, z);
             OPENSSL_free(z);
-        } else if (start <= z->range.start) {
+        } else if (start <= z->range.start && end >= z->range.start) {
             /*
              * The range being removed includes start of this range, but does
              * not cover the entire range (as this would be caught by the case
@@ -303,6 +303,7 @@ int ossl_uint_set_remove(UINT_SET *s, const UINT_RANGE *range)
              */
             y = create_set_item(end + 1, z->range.end);
             ossl_list_uint_set_insert_after(s, z, y);
+            z->range.end = start - 1;
             break;
         } else {
             /* Assert no partial overlap; all cases should be covered above. */
@@ -310,7 +311,7 @@ int ossl_uint_set_remove(UINT_SET *s, const UINT_RANGE *range)
         }
     }
 
-     return 1;
+    return 1;
 }
 
 int ossl_uint_set_query(const UINT_SET *s, uint64_t v)