]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
ldb:ldb_sqlite3: Access correct member of union
authorJoseph Sutton <josephsutton@catalyst.net.nz>
Wed, 2 Aug 2023 03:31:29 +0000 (15:31 +1200)
committerAndrew Bartlett <abartlet@samba.org>
Mon, 14 Aug 2023 04:57:34 +0000 (04:57 +0000)
Accessing the wrong member of a union invokes undefined behaviour.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
lib/ldb/ldb_sqlite3/ldb_sqlite3.c

index 110fe2a98d44d83e53e4ca6642d40402e71ac099..26c7023be17dc37db3cf62b978e12d3433c875e2 100644 (file)
@@ -380,12 +380,12 @@ static char *parsetree_to_sql(struct ldb_module *module,
                                        value.data);
 
        case LDB_OP_GREATER:
-               attr = ldb_attr_casefold(mem_ctx, t->u.equality.attr);
+               attr = ldb_attr_casefold(mem_ctx, t->u.comparison.attr);
                if (attr == NULL) return NULL;
                a = ldb_schema_attribute_by_name(ldb, attr);
 
                /* Get a canonicalised copy of the data */
-               a->syntax->canonicalise_fn(ldb, mem_ctx, &(t->u.equality.value), &value);
+               a->syntax->canonicalise_fn(ldb, mem_ctx, &(t->u.comparison.value), &value);
                if (value.data == NULL) {
                        return NULL;
                }
@@ -399,12 +399,12 @@ static char *parsetree_to_sql(struct ldb_module *module,
                                        attr);
 
        case LDB_OP_LESS:
-               attr = ldb_attr_casefold(mem_ctx, t->u.equality.attr);
+               attr = ldb_attr_casefold(mem_ctx, t->u.comparison.attr);
                if (attr == NULL) return NULL;
                a = ldb_schema_attribute_by_name(ldb, attr);
 
                /* Get a canonicalised copy of the data */
-               a->syntax->canonicalise_fn(ldb, mem_ctx, &(t->u.equality.value), &value);
+               a->syntax->canonicalise_fn(ldb, mem_ctx, &(t->u.comparison.value), &value);
                if (value.data == NULL) {
                        return NULL;
                }
@@ -431,12 +431,12 @@ static char *parsetree_to_sql(struct ldb_module *module,
                                        attr);
 
        case LDB_OP_APPROX:
-               attr = ldb_attr_casefold(mem_ctx, t->u.equality.attr);
+               attr = ldb_attr_casefold(mem_ctx, t->u.comparison.attr);
                if (attr == NULL) return NULL;
                a = ldb_schema_attribute_by_name(ldb, attr);
 
                /* Get a canonicalised copy of the data */
-               a->syntax->canonicalise_fn(ldb, mem_ctx, &(t->u.equality.value), &value);
+               a->syntax->canonicalise_fn(ldb, mem_ctx, &(t->u.comparison.value), &value);
                if (value.data == NULL) {
                        return NULL;
                }