From 6875a6f5c1c4c446eb5098f342a53913db83ac8a Mon Sep 17 00:00:00 2001 From: liuxinhao Date: Wed, 23 Oct 2024 10:34:17 +0800 Subject: [PATCH] fix(passwd): enriching pw_history error reporing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 丰富pw_history的报错信息 Related #52096 --- plugins/accounts/passwd-wrapper.cpp | 41 ++++++++++++++--------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/plugins/accounts/passwd-wrapper.cpp b/plugins/accounts/passwd-wrapper.cpp index 1a26737..e962729 100644 --- a/plugins/accounts/passwd-wrapper.cpp +++ b/plugins/accounts/passwd-wrapper.cpp @@ -1,14 +1,14 @@ /** - * Copyright (c) 2020 ~ 2021 KylinSec Co., Ltd. + * Copyright (c) 2020 ~ 2021 KylinSec Co., Ltd. * kiran-cc-daemon is licensed under Mulan PSL v2. - * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. * You may obtain a copy of Mulan PSL v2 at: - * http://license.coscl.org.cn/MulanPSL2 - * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, - * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, - * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. - * See the Mulan PSL v2 for more details. - * + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * * Author: tangjie02 */ @@ -289,20 +289,19 @@ bool PasswdWrapper::process_passwd_output_line(const std::string &line) break; case PASSWD_STATE_RETYPE: if (StrUtils::contains_oneof_substrs(lowercase_passwd_tips, std::vector{ - "successfully", - "failure", - })) + "successfully"})) { - if (lowercase_passwd_tips.find("successfully") != std::string::npos) - { - // 密码设置成功 - this->end_passwd(true); - } - else - { - this->additional_error_message_ = this->translation_passwd_tips(line); - this->state_ = PASSWD_STATE_ERROR; - } + // 密码设置成功 + this->end_passwd(true); + retval = true; + } + else if (StrUtils::contains_oneof_substrs(lowercase_passwd_tips, + std::vector{"failure"}) || + StrUtils::contains_allof_substrs(lowercase_passwd_tips, + std::vector{"password", "already", "used"})) + { + this->additional_error_message_ = this->translation_passwd_tips(line); + this->state_ = PASSWD_STATE_ERROR; retval = true; } break; -- 2.27.0