CVE-2022-32746 s4:torture: Fix LDB flags comparison
authorJoseph Sutton <josephsutton@catalyst.net.nz>
Tue, 21 Jun 2022 02:49:51 +0000 (14:49 +1200)
committerJule Anger <janger@samba.org>
Sun, 24 Jul 2022 09:41:53 +0000 (11:41 +0200)
LDB_FLAG_MOD_* values are not actually flags, and the previous
comparison was equivalent to

(el->flags & LDB_FLAG_MOD_MASK) == 0

which is only true if none of the LDB_FLAG_MOD_* values are set. Correct
the expression to what it was probably intended to be.

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

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
source4/torture/drs/rpc/dssync.c

index cde9f78692b922fdd12730992f53cf832c243c4e..ff7ce2d9074f3926f7e2831fd4a1e47e5bd08ca4 100644 (file)
@@ -527,7 +527,9 @@ static bool test_analyse_objects(struct torture_context *tctx,
                                el = &new_msg->elements[idx];
                                a = dsdb_attribute_by_lDAPDisplayName(ldap_schema,
                                                                      el->name);
-                               if (!(el->flags & (LDB_FLAG_MOD_ADD|LDB_FLAG_MOD_REPLACE))) {
+                               if (LDB_FLAG_MOD_TYPE(el->flags) != LDB_FLAG_MOD_ADD &&
+                                   LDB_FLAG_MOD_TYPE(el->flags) != LDB_FLAG_MOD_REPLACE)
+                               {
                                        /* DRS only value */
                                        is_warning = false;
                                } else if (a->linkID & 1) {