]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
dbwrap_watch: Prevent two watchers per fetch_locked sequence
authorVolker Lendecke <vl@samba.org>
Sun, 17 Nov 2019 15:45:45 +0000 (16:45 +0100)
committerJeremy Allison <jra@samba.org>
Fri, 22 Nov 2019 23:57:47 +0000 (23:57 +0000)
This can lead to very confusing bugs, and the code right now does not
deal with it well.

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
selftest/knownfail
source3/lib/dbwrap/dbwrap_watch.c

index ffd2f0b3f009feed94530407f5b6067e3ae08108..82259dcfe907a6f71db6b61cf56a0cccf15e9c2c 100644 (file)
@@ -16,7 +16,6 @@
 ^samba3.smbtorture_s3.crypt_server # expected to give ACCESS_DENIED as SMB1 encryption isn't used
 ^samba3.smbtorture_s3.*.LOCK12.*\(fileserver\)
 ^samba3.smbtorture_s3.*.LOCK12.*\(nt4_dc\)
-^samba3.smbtorture_s3.LOCAL-DBWRAP-WATCH4
 ^samba3.nbt.dgram.*netlogon2\(nt4_dc\)
 ^samba3.*rap.sam.*.useradd # Not provided by Samba 3
 ^samba3.*rap.sam.*.userdelete # Not provided by Samba 3
index 8246fd925e2bba2b553eb94f862339fcf1d72e29..0be8fd2df74b644642d42341e747b9909b07154e 100644 (file)
@@ -895,6 +895,10 @@ struct tevent_req *dbwrap_watched_watch_send(TALLOC_CTX *mem_ctx,
                tevent_req_nterror(req, NT_STATUS_INVALID_PARAMETER);
                return tevent_req_post(req, ev);
        }
+       if (subrec->added_watcher) {
+               tevent_req_nterror(req, NT_STATUS_REQUEST_NOT_ACCEPTED);
+               return tevent_req_post(req, ev);
+       }
 
        state->me = messaging_server_id(ctx->msg);