From: Soumya Koduri Date: Wed, 24 Aug 2022 05:38:38 +0000 (+0530) Subject: radosgw-admin: fix crash with 'sync flow create/remove' cmd X-Git-Tag: v17.2.4~31^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F47993%2Fhead;p=ceph.git radosgw-admin: fix crash with 'sync flow create/remove' cmd Avoid dereferencing an empty optional "flow-type" (if not specified). Fixes: https://tracker.ceph.com/issues/57275 Signed-off-by: Soumya Koduri (cherry picked from commit 539c5b87a2965ce43002430790abd586b98f620d) --- diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc index a3f8f38cae94..a18ac23d7807 100644 --- a/src/rgw/rgw_admin.cc +++ b/src/rgw/rgw_admin.cc @@ -8993,10 +8993,11 @@ next: if (opt_cmd == OPT::SYNC_GROUP_FLOW_CREATE) { CHECK_TRUE(require_opt(opt_group_id), "ERROR: --group-id not specified", EINVAL); CHECK_TRUE(require_opt(opt_flow_id), "ERROR: --flow-id not specified", EINVAL); - CHECK_TRUE(require_opt(opt_flow_type, - (symmetrical_flow_opt(*opt_flow_type) || - directional_flow_opt(*opt_flow_type))), - "ERROR: --flow-type not specified or invalid (options: symmetrical, directional)", EINVAL); + CHECK_TRUE(require_opt(opt_flow_type), + "ERROR: --flow-type not specified (options: symmetrical, directional)", EINVAL); + CHECK_TRUE((symmetrical_flow_opt(*opt_flow_type) || + directional_flow_opt(*opt_flow_type)), + "ERROR: --flow-type invalid (options: symmetrical, directional)", EINVAL); SyncPolicyContext sync_policy_ctx(zonegroup_id, zonegroup_name, opt_bucket); ret = sync_policy_ctx.init(); @@ -9043,10 +9044,11 @@ next: if (opt_cmd == OPT::SYNC_GROUP_FLOW_REMOVE) { CHECK_TRUE(require_opt(opt_group_id), "ERROR: --group-id not specified", EINVAL); CHECK_TRUE(require_opt(opt_flow_id), "ERROR: --flow-id not specified", EINVAL); - CHECK_TRUE(require_opt(opt_flow_type, - (symmetrical_flow_opt(*opt_flow_type) || - directional_flow_opt(*opt_flow_type))), - "ERROR: --flow-type not specified or invalid (options: symmetrical, directional)", EINVAL); + CHECK_TRUE(require_opt(opt_flow_type), + "ERROR: --flow-type not specified (options: symmetrical, directional)", EINVAL); + CHECK_TRUE((symmetrical_flow_opt(*opt_flow_type) || + directional_flow_opt(*opt_flow_type)), + "ERROR: --flow-type invalid (options: symmetrical, directional)", EINVAL); SyncPolicyContext sync_policy_ctx(zonegroup_id, zonegroup_name, opt_bucket); ret = sync_policy_ctx.init();