From 3bc07f6ce06151d96949becb2be423cfabf01429 Mon Sep 17 00:00:00 2001 From: Arthur Outhenin-Chalandre Date: Fri, 21 May 2021 17:05:24 +0200 Subject: [PATCH] rbd-mirror: fix segfault in snapshot replayer shutdown If an error arises in the init flow of the snapshot replayer and the function returns before the call on `register_local_update_watcher` the value of `m_update_watch_ctx` will not be initialized. Therefore, on the shutdown phase, the replayer will try to free this pointer and segfault. This commit fixes this issue by setting `m_update_watch_ctx` to `nullptr`. Fixes: https://tracker.ceph.com/issues/50931 Signed-off-by: Arthur Outhenin-Chalandre --- src/tools/rbd_mirror/image_replayer/snapshot/Replayer.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.h b/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.h index 170d3c1d0cc8..c2c28171f87d 100644 --- a/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.h +++ b/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.h @@ -211,7 +211,7 @@ private: int m_error_code = 0; std::string m_error_description; - C_UpdateWatchCtx* m_update_watch_ctx; + C_UpdateWatchCtx* m_update_watch_ctx = nullptr; uint64_t m_local_update_watcher_handle = 0; uint64_t m_remote_update_watcher_handle = 0; bool m_image_updated = false; -- 2.47.3