shadow/backport-chpasswd-add-IS_CRYPT_METHOD.patch

98 lines
3.7 KiB
Diff
Raw Normal View History

From 9cdb5251b6c30487a7d935a1a7827f493249479d Mon Sep 17 00:00:00 2001
From: juyin <zhuyan34@huawei.com>
Date: Sat, 2 Apr 2022 11:48:51 +0800
Subject: [PATCH] chpasswd: add IS_CRYPT_METHOD
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Use macro IS_CRYPT_METHOD instead of strcmp(crypt_method, xx)==0 to make the code more cleanup
Reference: https://github.com/shadow-maint/shadow/commit/9cdb5251b6c30487a7d935a1a7827f493249479d
Conflict: This patch is adapted to SM3.The pre-optimization of the get_salt function is not incorporated. Therefore, the modification related to the get_salt function is not incorporated in this patch.
---
src/chpasswd.c | 34 ++++++++++++++++++----------------
1 file changed, 18 insertions(+), 16 deletions(-)
diff --git a/src/chpasswd.c b/src/chpasswd.c
index 3b30c01..cc00180 100644
--- a/src/chpasswd.c
+++ b/src/chpasswd.c
@@ -52,6 +52,8 @@
/*@-exitarg@*/
#include "exitcodes.h"
+#define IS_CRYPT_METHOD(str) ((crypt_method != NULL && strcmp(crypt_method, str) == 0) ? true : false)
+
/*
* Global variables
*/
@@ -208,26 +210,26 @@ static void process_flags (int argc, char **argv)
sflg = true;
bad_s = 0;
#if defined(USE_SHA_CRYPT)
- if ( ( ((0 == strcmp (crypt_method, "SHA256")) || (0 == strcmp (crypt_method, "SHA512")))
- && (0 == getlong(optarg, &sha_rounds)))) {
+ if ((IS_CRYPT_METHOD("SHA256") || IS_CRYPT_METHOD("SHA512"))
+ && (0 == getlong(optarg, &sha_rounds))) {
bad_s = 1;
}
#endif /* USE_SHA_CRYPT */
#if defined(USE_BCRYPT)
- if (( (0 == strcmp (crypt_method, "BCRYPT"))
- && (0 == getlong(optarg, &bcrypt_rounds)))) {
+ if (IS_CRYPT_METHOD("BCRYPT")
+ && (0 == getlong(optarg, &bcrypt_rounds))) {
bad_s = 1;
}
#endif /* USE_BCRYPT */
#if defined(USE_YESCRYPT)
- if (( (0 == strcmp (crypt_method, "YESCRYPT"))
- && (0 == getlong(optarg, &yescrypt_cost)))) {
+ if (IS_CRYPT_METHOD("YESCRYPT")
+ && (0 == getlong(optarg, &yescrypt_cost))) {
bad_s = 1;
}
#endif /* USE_YESCRYPT */
#if defined(USE_SM3_CRYPT)
- if (( (0 == strcmp (crypt_method, "SM3"))
- && (0 == getlong(optarg, &sm3_rounds)))) {
+ if (IS_CRYPT_METHOD("SM3")
+ && (0 == getlong(optarg, &sm3_rounds))) {
bad_s = 1;
}
#endif /* USE_SM3_CRYPT */
@@ -275,21 +277,21 @@ static void check_flags (void)
}
if (cflg) {
- if ( (0 != strcmp (crypt_method, "DES"))
- && (0 != strcmp (crypt_method, "MD5"))
- && (0 != strcmp (crypt_method, "NONE"))
+ if ((!IS_CRYPT_METHOD("DES"))
+ &&(!IS_CRYPT_METHOD("MD5"))
+ &&(!IS_CRYPT_METHOD("NONE"))
#ifdef USE_SHA_CRYPT
- && (0 != strcmp (crypt_method, "SHA256"))
- && (0 != strcmp (crypt_method, "SHA512"))
+ &&(!IS_CRYPT_METHOD("SHA256"))
+ &&(!IS_CRYPT_METHOD("SHA512"))
#endif /* USE_SHA_CRYPT */
#ifdef USE_SM3_CRYPT
- && (0 != strcmp (crypt_method, "SM3"))
+ &&(!IS_CRYPT_METHOD("SM3"))
#endif /* USE_SM3_CRYPT */
#ifdef USE_BCRYPT
- && (0 != strcmp (crypt_method, "BCRYPT"))
+ &&(!IS_CRYPT_METHOD("BCRYPT"))
#endif /* USE_BCRYPT */
#ifdef USE_YESCRYPT
- && (0 != strcmp (crypt_method, "YESCRYPT"))
+ &&(!IS_CRYPT_METHOD("YESCRYPT"))
#endif /* USE_YESCRYPT */
) {
fprintf (stderr,
--
2.27.0