From ccbaf431057e4c4a9866ab0980819deaaee69ce2 Mon Sep 17 00:00:00 2001 From: yixiangzhike Date: Mon, 6 Dec 2021 19:19:09 +0800 Subject: [PATCH] Fix lookup for word in FindPW() --- backport-cracklib-2.9.6-lookup.patch | 60 ++++++++++++++++++++++++++++ cracklib.spec | 8 +++- 2 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 backport-cracklib-2.9.6-lookup.patch diff --git a/backport-cracklib-2.9.6-lookup.patch b/backport-cracklib-2.9.6-lookup.patch new file mode 100644 index 0000000..52ce857 --- /dev/null +++ b/backport-cracklib-2.9.6-lookup.patch @@ -0,0 +1,60 @@ +diff -up cracklib-2.9.6/lib/packlib.c.lookup cracklib-2.9.6/lib/packlib.c +--- cracklib-2.9.6/lib/packlib.c.lookup 2018-10-10 14:19:06.988958835 +0200 ++++ cracklib-2.9.6/lib/packlib.c 2018-11-26 16:04:34.648256614 +0100 +@@ -585,12 +585,11 @@ fprintf(stderr, "look for (%s)\n", strin + fprintf(stderr, "---- %lu, %lu ----\n", lwm, hwm); + #endif + +- middle = lwm + ((hwm - lwm + 1) / 2); +- + for (;;) + { + int cmp; + ++ middle = lwm + ((hwm - lwm + 1) / 2); + + #if DEBUG + fprintf(stderr, "lwm = %lu, middle = %lu, hwm = %lu\n", lwm, middle, hwm); +@@ -617,24 +616,28 @@ fprintf(stderr, "look for (%s)\n", strin + return(middle); + } + +- if (middle == hwm) +- { +-#if DEBUG +- fprintf(stderr, "at terminal subdivision, stopping search\n"); +-#endif +- break; +- } +- + if (cmp < 0) + { +- hwm = middle; +- middle = lwm + ((hwm - lwm ) / 2); +- } ++ if (middle == lwm) ++ { ++#if DEBUG ++ fprintf(stderr, "at terminal subdivision from right, stopping search\n"); ++#endif ++ break; ++ } ++ hwm = middle - 1; ++ } + else if (cmp > 0) + { +- lwm = middle; +- middle = lwm + ((hwm - lwm + 1) / 2); +- } ++ if (middle == hwm) ++ { ++#if DEBUG ++ fprintf(stderr, "at terminal subdivision from left, stopping search\n"); ++#endif ++ break; ++ } ++ lwm = middle + 1; ++ } + } + + return (PW_WORDS(pwp)); diff --git a/cracklib.spec b/cracklib.spec index 3febaa5..acfc1fe 100644 --- a/cracklib.spec +++ b/cracklib.spec @@ -6,14 +6,15 @@ Name: cracklib Version: 2.9.7 -Release: 4 +Release: 5 Summary: A password-checking library License: LGPLv2+ URL: http://sourceforge.net/projects/cracklib/ Source0: https://github.com/cracklib/cracklib/releases/download/cracklib-%{version}/cracklib-%{version}.tar.gz Source1: https://github.com/cracklib/cracklib/releases/download/cracklib-%{version}/cracklib-words-%{version}.gz -Patch9000: fix-problem-of-error-message-about-simplistic-passwo.patch +Patch0: fix-problem-of-error-message-about-simplistic-passwo.patch +Patch1: backport-cracklib-2.9.6-lookup.patch BuildRequires: gcc, words, gettext, gettext-autopoint, zlib-devel %if %{with python2} @@ -195,6 +196,9 @@ make test %endif %changelog +* Mon Dec 6 2021 yixiangzhike - 2.9.7-5 +- Fix lookup for word in FindPW() + * Mon May 17 2021 yixiangzhike - 2.9.7-4 - Add %%config(noreplace) for pw_dict -- Gitee