s3:util:net_registry: registry_value_cmp() uses NUMERIC_CMP()
authorDouglas Bagnall <douglas.bagnall@catalyst.net.nz>
Thu, 4 Apr 2024 01:25:54 +0000 (14:25 +1300)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 10 Apr 2024 22:56:33 +0000 (22:56 +0000)
v->type is an int-sized enum, so overflow might be possible if it could
be arbitrarily set.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15625

Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source3/utils/net_registry.c

index 92f6ebf374be979e6659ebe6a225c24af1187d7a..65b7136583aeb29ebf0d20a60939464b7ede5a11 100644 (file)
@@ -1146,7 +1146,7 @@ static int registry_value_cmp(
        if (v1->type == v2->type) {
                return data_blob_cmp(&v1->data, &v2->data);
        }
-       return v1->type - v2->type;
+       return NUMERIC_CMP(v1->type, v2->type);
 }
 
 static WERROR precheck_create_val(struct precheck_ctx *ctx,