14 Star 0 Fork 13

src-openEuler/cracklib

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
fix-problem-of-error-message-about-simplistic-passwo.patch 3.38 KB
一键复制 编辑 原始数据 按行查看 历史
yixiangzhike 提交于 2022-10-21 15:04 . update to 2.9.8
From e97dc89876ffd790aed93cc18c13c16bd2263f68 Mon Sep 17 00:00:00 2001
From: openEuler Buildteam <buildteam@openeuler.org>
Date: Sat, 18 Jan 2020 14:08:23 +0800
Subject: [PATCH] fix problem of error message about simplistic password
Signed-off-by: openEuler Buildteam <buildteam@openeuler.org>
---
lib/fascist.c | 33 ++++++++++++++++++++++++++++-----
util/cracklib-format | 19 ++++++----
2 files changed, 34 insertions(+), 18 deletions(-)
diff --git a/lib/fascist.c b/lib/fascist.c
index c5a018c..a1a8564 100644
--- a/lib/fascist.c
+++ b/lib/fascist.c
@@ -55,7 +55,6 @@ static char *r_destructors[] = {
"/?p@?p", /* purging out punctuation/symbols/junk */
"/?s@?s",
- "/?X@?X",
/* attempt reverse engineering of password strings */
@@ -452,6 +451,12 @@ GTry(rawtext, password)
continue;
}
+ if (len - strlen(mp) >= 3)
+ {
+ /* purged too much */
+ continue;
+ }
+
#ifdef DEBUG
printf("%-16s = %-16s (destruct %s)\n", mp, rawtext, r_destructors[i]);
#endif
@@ -478,6 +483,12 @@ GTry(rawtext, password)
continue;
}
+ if (len - strlen(mp) >= 3)
+ {
+ /* purged too much */
+ continue;
+ }
+
#ifdef DEBUG
printf("%-16s = %-16s (construct %s)\n", mp, password, r_constructors[i]);
#endif
@@ -705,6 +716,7 @@ FascistLookUser(PWDICT *pwp, char *instring,
char *password;
char rpassword[STRINGSIZE];
uint32_t notfound;
+ int len;
notfound = PW_WORDS(pwp);
/* already truncated if from FascistCheck() */
@@ -754,6 +766,7 @@ FascistLookUser(PWDICT *pwp, char *instring,
return _("it is all whitespace");
}
+ len = strlen(password);
i = 0;
ptr = password;
while (ptr[0] && ptr[1])
@@ -765,10 +778,7 @@ FascistLookUser(PWDICT *pwp, char *instring,
ptr++;
}
- /* Change by Ben Karsin from ITS at University of Hawaii at Manoa. Static MAXSTEP
- would generate many false positives for long passwords. */
- maxrepeat = 3+(0.09*strlen(password));
- if (i > maxrepeat)
+ if (len - i < MINLEN)
{
return _("it is too simplistic/systematic");
}
@@ -801,6 +811,12 @@ FascistLookUser(PWDICT *pwp, char *instring,
continue;
}
+ if (len - strlen(a) >= 3)
+ {
+ /* purged too much */
+ continue;
+ }
+
#ifdef DEBUG
printf("%-16s (dict)\n", a);
#endif
@@ -821,6 +837,13 @@ FascistLookUser(PWDICT *pwp, char *instring,
{
continue;
}
+
+ if (len - strlen(a) >= 3)
+ {
+ /* purged too much */
+ continue;
+ }
+
#ifdef DEBUG
printf("%-16s (reversed dict)\n", a);
#endif
diff --git a/util/cracklib-format b/util/cracklib-format
index c133d75..360d109 100755
--- a/util/cracklib-format
+++ b/util/cracklib-format
@@ -3,17 +3,10 @@
# This preprocesses a set of word lists into a suitable form for input
# into cracklib-packer
#
-# Truncates lines longer than 1022 characters long as cracklib-packer
-# does not handle them correctly.
-#
-# The last part of the pipeline uses 'grep -v' to remove any blank
-# lines (possibly introduced by earlier parts of the pipeline) as
-# cracklib-packer will generate "skipping line" warnings otherwise.
-#
+LC_ALL=C
+export LC_ALL
gzip -cdf "$@" |
- grep -a -v '^#' |
- tr '[A-Z]' '[a-z]' |
- tr -cd '\012[a-z][0-9]' |
- cut -c 1-1022 |
- grep -v '^$' |
- env LC_ALL=C sort -u
+ grep -a -E -v '^.{30,}$' |
+ tr '[:upper:]' '[:lower:]' |
+ sed s/[[:space:]]//g |
+ sort -u
--
1.8.3.1
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/src-openeuler/cracklib.git
git@gitee.com:src-openeuler/cracklib.git
src-openeuler
cracklib
cracklib
master

搜索帮助

D67c1975 1850385 1daf7b77 1850385