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
|
||
|