98 lines
3.7 KiB
Diff
98 lines
3.7 KiB
Diff
|
|
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
|
|||
|
|
|