From e2c51985e487befbcda5591ab92aeaeefc229893 Mon Sep 17 00:00:00 2001 From: Ilya Dryomov Date: Fri, 12 Aug 2022 11:10:45 +0200 Subject: [PATCH] rbd: remove incorrect use of std::includes() - std::includes() requires sorted ranges but command specs aren't sorted - std::includes() purpose is to check whether the second range is a subsequence of the first range but here the size of the second range is always equal to the size of the first range, which means that, had the ranges been sorted, std::includes() would have checked straight equality Signed-off-by: Ilya Dryomov (cherry picked from commit 1483e2a20237ad65fa3188b910e4e19f3ace9030) --- src/tools/rbd/Shell.cc | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/tools/rbd/Shell.cc b/src/tools/rbd/Shell.cc index 9a544080e50f..05052ff98dd8 100644 --- a/src/tools/rbd/Shell.cc +++ b/src/tools/rbd/Shell.cc @@ -311,10 +311,9 @@ Shell::Action *Shell::find_action(const CommandSpec &command_spec, for (Action *action : actions) { if (action->command_spec.size() <= command_spec.size()) { - if (std::includes(action->command_spec.begin(), - action->command_spec.end(), - command_spec.begin(), - command_spec.begin() + action->command_spec.size())) { + if (std::equal(action->command_spec.begin(), + action->command_spec.end(), + command_spec.begin())) { if (matching_spec != NULL) { *matching_spec = &action->command_spec; } @@ -324,11 +323,9 @@ Shell::Action *Shell::find_action(const CommandSpec &command_spec, } if (!action->alias_command_spec.empty() && action->alias_command_spec.size() <= command_spec.size()) { - if (std::includes(action->alias_command_spec.begin(), - action->alias_command_spec.end(), - command_spec.begin(), - command_spec.begin() + - action->alias_command_spec.size())) { + if (std::equal(action->alias_command_spec.begin(), + action->alias_command_spec.end(), + command_spec.begin())) { if (matching_spec != NULL) { *matching_spec = &action->alias_command_spec; } -- 2.47.3