]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
g_lock: Fix uninitalized variable reads
authorVolker Lendecke <vl@samba.org>
Wed, 3 Mar 2021 18:15:31 +0000 (19:15 +0100)
committerKarolin Seeger <kseeger@samba.org>
Mon, 8 Mar 2021 08:51:39 +0000 (08:51 +0000)
If dbwrap_watched_watch_recv() returns IO_TIMEOUT, "blockerdead" might
be an uninitialized non-false, and further down we'll remove the wrong
exclusive locker.

Bug: https://bugzilla.samba.org/show_bug.cgi?id=14636
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
Autobuild-User(master): Stefan Metzmacher <metze@samba.org>
Autobuild-Date(master): Fri Mar  5 11:22:07 UTC 2021 on sn-devel-184

(cherry picked from commit 654c18a244f060d81280493a324b98602a69dbbf)

Autobuild-User(v4-12-test): Karolin Seeger <kseeger@samba.org>
Autobuild-Date(v4-12-test): Mon Mar  8 08:51:39 UTC 2021 on sn-devel-184

source3/lib/g_lock.c

index 4bf30188a43e2c568dc6495ebefe81ed232a3724..c3b4b644537becaee10279c479bb71fd7b274a63 100644 (file)
@@ -600,8 +600,8 @@ static void g_lock_lock_retry(struct tevent_req *subreq)
        struct g_lock_lock_state *state = tevent_req_data(
                req, struct g_lock_lock_state);
        struct g_lock_lock_fn_state fn_state;
-       struct server_id blocker;
-       bool blockerdead;
+       struct server_id blocker = { .pid = 0 };
+       bool blockerdead = false;
        NTSTATUS status;
 
        status = dbwrap_watched_watch_recv(subreq, &blockerdead, &blocker);