Compare commits
67 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
268edecb67 | ||
|
|
ac34a7a48c | ||
|
|
48f6fe27af | ||
|
|
253ee10c45 | ||
|
|
4beb16080f | ||
|
|
4c9957c90f | ||
|
|
78da225975 | ||
|
|
d2f5af3f9e |
||
|
|
1a51e53e47 | ||
|
|
3217e5685b |
||
|
|
57c3c940ca |
||
|
|
8e08eacebe | ||
|
|
7903ce885c |
||
|
|
d3fefae733 |
||
|
|
6d9868a4c6 |
||
|
|
620dc687b7 |
||
|
|
bd42e8f9cf | ||
|
|
5d99be852e |
||
|
|
fab3ab8641 | ||
|
|
0cc486dfc5 | ||
|
|
3e85d8d26d | ||
|
|
28dcf39ec1 | ||
|
|
32ce35d61a | ||
|
|
8dcbcb28e3 | ||
|
|
a11e8f0582 | ||
|
|
2e9952380c | ||
|
|
c7cf122685 | ||
|
|
1595629cca | ||
|
|
f67e241300 | ||
|
|
bc61ed0119 | ||
|
|
6d35644e4b | ||
|
|
e828818539 | ||
|
|
673d98d62e | ||
|
|
8274cbbc56 | ||
|
|
4b67c0c867 | ||
|
|
4dbc86aaca | ||
|
|
811f0d1829 | ||
|
|
68dc49109f | ||
|
|
09348f50cb | ||
|
|
f69740c948 |
||
|
|
73c5a99220 | ||
|
|
96682a090d | ||
|
|
bd8f1f5510 | ||
|
|
31ac5ac711 | ||
|
|
0b46647a95 | ||
|
|
f1a74a691b | ||
|
|
2edb3e61e3 | ||
|
|
345a730d45 | ||
|
|
aff542331c | ||
|
|
aba629b842 | ||
|
|
d3e5311e69 | ||
|
|
543a41b0c7 | ||
|
|
8757bbd8fe | ||
|
|
dd1a331c80 | ||
|
|
ecebfdc3b3 | ||
|
|
02878afc6e | ||
|
|
cb1f0ab799 | ||
|
|
ec8362e10e | ||
|
|
413dd98aaf | ||
|
|
edb1a12c91 | ||
|
|
3c36ea8ab5 | ||
|
|
d8d736852f | ||
|
|
247f79b137 | ||
|
|
a483b3bf78 | ||
|
|
93277b06b1 | ||
|
|
af780d829b | ||
|
|
8f75c6f5cf |
15 changed files with 1390 additions and 45024 deletions
11
.gitignore
vendored
11
.gitignore
vendored
|
|
@ -49,3 +49,14 @@ cracklib-2.8.16.tar.gz
|
|||
/cracklib-2.8.20.tar.gz
|
||||
/cracklib-2.8.21.tar.gz
|
||||
/cracklib-2.8.22.tar.gz
|
||||
/cracklib-2.9.0.tar.gz
|
||||
/cracklib-2.9.1.tar.gz
|
||||
/cracklib-2.9.6.tar.gz
|
||||
/cracklib-words-2.9.6.gz
|
||||
/missing-words.gz
|
||||
/cracklib-2.9.7.tar.gz
|
||||
/cracklib-words-2.9.7.gz
|
||||
/cracklib2_2.9.2-1.debian.tar.xz
|
||||
/cracklib2_2.9.2-1.dsc
|
||||
/cracklib-2.9.11.tar.gz
|
||||
/cracklib-words-2.9.11.gz
|
||||
|
|
|
|||
|
|
@ -1,68 +0,0 @@
|
|||
Don't depend on a consumer of <packer.h> to be using autoconf, and to be
|
||||
checking for for the presence of <inttypes.h> and <stdint.h>, and including
|
||||
its own "config.h" before including <packer.h>, in order for this to be
|
||||
correct on 64-bit machines.
|
||||
|
||||
diff -up cracklib-2.8.15/configure.in cracklib-2.8.15/configure.in
|
||||
--- cracklib-2.8.15/configure.in 2009-11-18 18:58:21.000000000 -0500
|
||||
+++ cracklib-2.8.15/configure.in 2009-12-01 15:16:35.000000000 -0500
|
||||
@@ -26,6 +26,19 @@ AC_CHECK_HEADERS(zlib.h, AC_DEFINE(HAVE_
|
||||
|
||||
AC_SEARCH_LIBS(gzopen, z)
|
||||
|
||||
+if test x$ac_cv_header_inttypes_h = xyes ; then
|
||||
+ CRACKLIB_INTEGER_TYPES1="#include <inttypes.h>"
|
||||
+ CRACKLIB_INTEGER_TYPES2=
|
||||
+elif test x$ac_cv_header_stdint_h = xyes ; then
|
||||
+ CRACKLIB_INTEGER_TYPES1="#include <stdint.h>"
|
||||
+ CRACKLIB_INTEGER_TYPES2=
|
||||
+else
|
||||
+ CRACKLIB_INTEGER_TYPES1="typedef unsigned int uint32_t;"
|
||||
+ CRACKLIB_INTEGER_TYPES2="typedef unsigned short uint16_t;"
|
||||
+fi
|
||||
+AC_SUBST(CRACKLIB_INTEGER_TYPES1)
|
||||
+AC_SUBST(CRACKLIB_INTEGER_TYPES2)
|
||||
+
|
||||
dnl Cygwin workaround
|
||||
AC_MSG_CHECKING(if LINE_MAX is defined)
|
||||
AC_EGREP_CPP(yes,
|
||||
@@ -92,5 +105,6 @@ AC_SUBST(CROSS_COMPILING, $cross_compili
|
||||
|
||||
AC_OUTPUT(util/Makefile lib/Makefile doc/Makefile python/Makefile Makefile \
|
||||
python/setup.py \
|
||||
+ lib/packer.h \
|
||||
po/Makefile.in m4/Makefile dicts/Makefile cracklib.spec)
|
||||
|
||||
diff -up cracklib-2.8.15/lib/packer.h.in cracklib-2.8.15/lib/packer.h.in
|
||||
--- cracklib-2.8.15/lib/packer.h.in 2009-12-01 15:15:38.000000000 -0500
|
||||
+++ cracklib-2.8.15/lib/packer.h.in 2009-12-01 15:15:38.000000000 -0500
|
||||
@@ -30,17 +30,8 @@
|
||||
#define _(String) (String)
|
||||
#endif
|
||||
|
||||
-#if defined(HAVE_INTTYPES_H)
|
||||
-#include <inttypes.h>
|
||||
-#else
|
||||
-#if defined(HAVE_STDINT_H)
|
||||
-#include <stdint.h>
|
||||
-#else
|
||||
-typedef unsigned int uint32_t;
|
||||
-typedef unsigned short uint16_t;
|
||||
-#endif
|
||||
-#endif
|
||||
-
|
||||
+@CRACKLIB_INTEGER_TYPES1@
|
||||
+@CRACKLIB_INTEGER_TYPES2@
|
||||
|
||||
struct pi_header
|
||||
{
|
||||
@@ -83,6 +74,9 @@ typedef struct {
|
||||
int dummy;
|
||||
} PWDICT;
|
||||
|
||||
+@CRACKLIB_INTEGER_TYPES1@
|
||||
+@CRACKLIB_INTEGER_TYPES2@
|
||||
+
|
||||
#endif
|
||||
|
||||
extern PWDICT *PWOpen(const char *prefix, char *mode);
|
||||
662
cracklib-2.9.11-packlib-reentrant.patch
Normal file
662
cracklib-2.9.11-packlib-reentrant.patch
Normal file
|
|
@ -0,0 +1,662 @@
|
|||
diff -Naur cracklib-2.9.11-orig/lib/fascist.c cracklib-2.9.11/lib/fascist.c
|
||||
--- cracklib-2.9.11-orig/lib/fascist.c 2019-02-13 20:54:41.000000000 -0500
|
||||
+++ cracklib-2.9.11/lib/fascist.c 2023-07-07 18:20:42.239904964 -0400
|
||||
@@ -36,8 +36,8 @@
|
||||
#undef DEBUG
|
||||
#undef DEBUG2
|
||||
|
||||
-extern char *Reverse(char *buf);
|
||||
-extern char *Lowercase(char *buf);
|
||||
+extern char *Reverse(char *buf, char *area);
|
||||
+extern char *Lowercase(char *buf, char *area);
|
||||
|
||||
static char *r_destructors[] = {
|
||||
":", /* noop - must do this to test raw word. */
|
||||
@@ -439,6 +439,8 @@
|
||||
int i;
|
||||
int len;
|
||||
char *mp;
|
||||
+ char area[STRINGSIZE];
|
||||
+ char revarea[STRINGSIZE];
|
||||
|
||||
/* use destructors to turn password into rawtext */
|
||||
/* note use of Reverse() to save duplicating all rules */
|
||||
@@ -447,7 +449,7 @@
|
||||
|
||||
for (i = 0; r_destructors[i]; i++)
|
||||
{
|
||||
- if (!(mp = Mangle(password, r_destructors[i])))
|
||||
+ if (!(mp = Mangle(password, r_destructors[i], area)))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -462,10 +464,10 @@
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
- printf("%-16s = %-16s (destruct %s reversed)\n", Reverse(mp), rawtext, r_destructors[i]);
|
||||
+ printf("%-16s = %-16s (destruct %s reversed)\n", Reverse(mp, revarea), rawtext, r_destructors[i]);
|
||||
#endif
|
||||
|
||||
- if (!strncmp(Reverse(mp), rawtext, len))
|
||||
+ if (!strncmp(Reverse(mp, revarea), rawtext, len))
|
||||
{
|
||||
return (1);
|
||||
}
|
||||
@@ -473,7 +475,7 @@
|
||||
|
||||
for (i = 0; r_constructors[i]; i++)
|
||||
{
|
||||
- if (!(mp = Mangle(rawtext, r_constructors[i])))
|
||||
+ if (!(mp = Mangle(rawtext, r_constructors[i], area)))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -520,7 +522,7 @@
|
||||
|
||||
strncpy(tbuffer, gecos, STRINGSIZE);
|
||||
tbuffer[STRINGSIZE-1] = '\0';
|
||||
- strcpy(gbuffer, Lowercase(tbuffer));
|
||||
+ Lowercase(tbuffer, gbuffer);
|
||||
|
||||
wc = 0;
|
||||
ptr = gbuffer;
|
||||
@@ -704,6 +706,7 @@
|
||||
char junk[STRINGSIZE];
|
||||
char *password;
|
||||
char rpassword[STRINGSIZE];
|
||||
+ char area[STRINGSIZE];
|
||||
uint32_t notfound;
|
||||
|
||||
notfound = PW_WORDS(pwp);
|
||||
@@ -740,7 +743,7 @@
|
||||
return _("it does not contain enough DIFFERENT characters");
|
||||
}
|
||||
|
||||
- strcpy(password, (char *)Lowercase(password));
|
||||
+ strcpy(password, (char *)Lowercase(password, area));
|
||||
|
||||
Trim(password);
|
||||
|
||||
@@ -796,7 +799,7 @@
|
||||
{
|
||||
char *a;
|
||||
|
||||
- if (!(a = Mangle(password, r_destructors[i])))
|
||||
+ if (!(a = Mangle(password, r_destructors[i], area)))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -811,13 +814,13 @@
|
||||
}
|
||||
}
|
||||
|
||||
- strcpy(password, (char *)Reverse(password));
|
||||
+ strcpy(password, (char *)Reverse(password, area));
|
||||
|
||||
for (i = 0; r_destructors[i]; i++)
|
||||
{
|
||||
char *a;
|
||||
|
||||
- if (!(a = Mangle(password, r_destructors[i])))
|
||||
+ if (!(a = Mangle(password, r_destructors[i], area)))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
diff -Naur cracklib-2.9.11-orig/lib/packer.h cracklib-2.9.11/lib/packer.h
|
||||
--- cracklib-2.9.11-orig/lib/packer.h 2023-03-04 11:00:49.000000000 -0500
|
||||
+++ cracklib-2.9.11/lib/packer.h 2023-07-07 18:21:04.315119032 -0400
|
||||
@@ -82,7 +82,7 @@
|
||||
extern unsigned int FindPW(PWDICT *pwp, char *string);
|
||||
extern int PutPW(PWDICT *pwp, char *string);
|
||||
extern int PMatch(char *control, char *string);
|
||||
-extern char *Mangle(char *input, char *control);
|
||||
+extern char *Mangle(char *input, char *control, char *area);
|
||||
extern char Chop(char *string);
|
||||
extern char *Trim(char *string);
|
||||
extern char *FascistLook(PWDICT *pwp, char *instring);
|
||||
diff -Naur cracklib-2.9.11-orig/lib/packlib.c cracklib-2.9.11/lib/packlib.c
|
||||
--- cracklib-2.9.11-orig/lib/packlib.c 2023-03-04 11:00:49.000000000 -0500
|
||||
+++ cracklib-2.9.11/lib/packlib.c 2023-07-07 18:44:55.183214284 -0400
|
||||
@@ -65,8 +65,8 @@
|
||||
char *mode;
|
||||
{
|
||||
int use64 = 0;
|
||||
- static PWDICT pdesc;
|
||||
- static PWDICT64 pdesc64;
|
||||
+ PWDICT *pdesc;
|
||||
+ PWDICT64 pdesc64;
|
||||
char iname[STRINGSIZE];
|
||||
char dname[STRINGSIZE];
|
||||
char wname[STRINGSIZE];
|
||||
@@ -74,13 +74,11 @@
|
||||
void *ifp;
|
||||
void *wfp;
|
||||
|
||||
- if (pdesc.header.pih_magic == PIH_MAGIC)
|
||||
- {
|
||||
- fprintf(stderr, "%s: another dictionary already open\n", prefix);
|
||||
+ pdesc = malloc(sizeof(*pdesc));
|
||||
+ if (pdesc == NULL)
|
||||
return NULL;
|
||||
- }
|
||||
|
||||
- memset(&pdesc, '\0', sizeof(pdesc));
|
||||
+ memset(pdesc, '\0', sizeof(*pdesc));
|
||||
memset(&pdesc64, '\0', sizeof(pdesc64));
|
||||
|
||||
snprintf(iname, STRINGSIZE, "%s.pwi", prefix);
|
||||
@@ -89,77 +87,80 @@
|
||||
|
||||
if (mode[0] == 'r')
|
||||
{
|
||||
- pdesc.flags &= ~PFOR_USEZLIB;
|
||||
+ pdesc->flags &= ~PFOR_USEZLIB;
|
||||
/* first try the normal db file */
|
||||
- if (!(pdesc.dfp = fopen(dname, mode)))
|
||||
+ if (!(pdesc->dfp = fopen(dname, mode)))
|
||||
{
|
||||
#ifdef HAVE_ZLIB_H
|
||||
- pdesc.flags |= PFOR_USEZLIB;
|
||||
+ pdesc->flags |= PFOR_USEZLIB;
|
||||
/* try extension .gz */
|
||||
snprintf(dname, STRINGSIZE, "%s.pwd.gz", prefix);
|
||||
- if (!(pdesc.dfp = gzopen(dname, mode)))
|
||||
+ if (!(pdesc->dfp = gzopen(dname, mode)))
|
||||
{
|
||||
perror(dname);
|
||||
+ free(pdesc);
|
||||
return NULL;
|
||||
}
|
||||
#else
|
||||
perror(dname);
|
||||
+ free(pdesc);
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
- pdesc.flags &= ~PFOR_USEZLIB;
|
||||
+ pdesc->flags &= ~PFOR_USEZLIB;
|
||||
/* write mode: use fopen */
|
||||
- if (!(pdesc.dfp = fopen(dname, mode)))
|
||||
+ if (!(pdesc->dfp = fopen(dname, mode)))
|
||||
{
|
||||
perror(dname);
|
||||
+ free(pdesc);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
- if (!(pdesc.ifp = fopen(iname, mode)))
|
||||
+ if (!(pdesc->ifp = fopen(iname, mode)))
|
||||
{
|
||||
#ifdef HAVE_ZLIB_H
|
||||
- if (pdesc.flags & PFOR_USEZLIB)
|
||||
- gzclose(pdesc.dfp);
|
||||
+ if (pdesc->flags & PFOR_USEZLIB)
|
||||
+ gzclose(pdesc->dfp);
|
||||
else
|
||||
#endif
|
||||
- fclose(pdesc.dfp);
|
||||
+ fclose(pdesc->dfp);
|
||||
perror(iname);
|
||||
+ free(pdesc);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- if ((pdesc.wfp = fopen(wname, mode)))
|
||||
+ if ((pdesc->wfp = fopen(wname, mode)))
|
||||
{
|
||||
- pdesc.flags |= PFOR_USEHWMS;
|
||||
+ pdesc->flags |= PFOR_USEHWMS;
|
||||
}
|
||||
|
||||
- ifp = pdesc.ifp;
|
||||
- dfp = pdesc.dfp;
|
||||
- wfp = pdesc.wfp;
|
||||
+ ifp = pdesc->ifp;
|
||||
+ dfp = pdesc->dfp;
|
||||
+ wfp = pdesc->wfp;
|
||||
|
||||
if (mode[0] == 'w')
|
||||
{
|
||||
- pdesc.flags |= PFOR_WRITE;
|
||||
- pdesc.header.pih_magic = PIH_MAGIC;
|
||||
- pdesc.header.pih_blocklen = NUMWORDS;
|
||||
- pdesc.header.pih_numwords = 0;
|
||||
+ pdesc->flags |= PFOR_WRITE;
|
||||
+ pdesc->header.pih_magic = PIH_MAGIC;
|
||||
+ pdesc->header.pih_blocklen = NUMWORDS;
|
||||
+ pdesc->header.pih_numwords = 0;
|
||||
|
||||
- fwrite((char *) &pdesc.header, sizeof(pdesc.header), 1, ifp);
|
||||
+ fwrite((char *) &pdesc->header, sizeof(pdesc->header), 1, ifp);
|
||||
} else
|
||||
{
|
||||
- pdesc.flags &= ~PFOR_WRITE;
|
||||
+ pdesc->flags &= ~PFOR_WRITE;
|
||||
|
||||
- if (!fread((char *) &pdesc.header, sizeof(pdesc.header), 1, ifp))
|
||||
+ if (!fread((char *) &pdesc->header, sizeof(pdesc->header), 1, ifp))
|
||||
{
|
||||
fprintf(stderr, "%s: error reading header\n", prefix);
|
||||
|
||||
- pdesc.header.pih_magic = 0;
|
||||
fclose(ifp);
|
||||
#ifdef HAVE_ZLIB_H
|
||||
- if (pdesc.flags & PFOR_USEZLIB)
|
||||
+ if (pdesc->flags & PFOR_USEZLIB)
|
||||
gzclose(dfp);
|
||||
else
|
||||
#endif
|
||||
@@ -168,10 +169,11 @@
|
||||
{
|
||||
fclose(wfp);
|
||||
}
|
||||
+ free(pdesc);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- if ((pdesc.header.pih_magic == 0) || (pdesc.header.pih_numwords == 0))
|
||||
+ if ((pdesc->header.pih_magic == 0) || (pdesc->header.pih_numwords == 0))
|
||||
{
|
||||
/* uh-oh. either a broken "64-bit" file or a garbage file. */
|
||||
rewind (ifp);
|
||||
@@ -179,10 +181,9 @@
|
||||
{
|
||||
fprintf(stderr, "%s: error reading header\n", prefix);
|
||||
|
||||
- pdesc.header.pih_magic = 0;
|
||||
fclose(ifp);
|
||||
#ifdef HAVE_ZLIB_H
|
||||
- if (pdesc.flags & PFOR_USEZLIB)
|
||||
+ if (pdesc->flags & PFOR_USEZLIB)
|
||||
gzclose(dfp);
|
||||
else
|
||||
#endif
|
||||
@@ -191,6 +192,7 @@
|
||||
{
|
||||
fclose(wfp);
|
||||
}
|
||||
+ free(pdesc);
|
||||
return NULL;
|
||||
}
|
||||
if (pdesc64.header.pih_magic != PIH_MAGIC)
|
||||
@@ -198,10 +200,9 @@
|
||||
/* nope, not "64-bit" after all */
|
||||
fprintf(stderr, "%s: error reading header\n", prefix);
|
||||
|
||||
- pdesc.header.pih_magic = 0;
|
||||
fclose(ifp);
|
||||
#ifdef HAVE_ZLIB_H
|
||||
- if (pdesc.flags & PFOR_USEZLIB)
|
||||
+ if (pdesc->flags & PFOR_USEZLIB)
|
||||
gzclose(dfp);
|
||||
else
|
||||
#endif
|
||||
@@ -211,23 +212,23 @@
|
||||
{
|
||||
fclose(wfp);
|
||||
}
|
||||
+ free(pdesc);
|
||||
return NULL;
|
||||
}
|
||||
- pdesc.header.pih_magic = pdesc64.header.pih_magic;
|
||||
- pdesc.header.pih_numwords = pdesc64.header.pih_numwords;
|
||||
- pdesc.header.pih_blocklen = pdesc64.header.pih_blocklen;
|
||||
- pdesc.header.pih_pad = pdesc64.header.pih_pad;
|
||||
+ pdesc->header.pih_magic = pdesc64.header.pih_magic;
|
||||
+ pdesc->header.pih_numwords = pdesc64.header.pih_numwords;
|
||||
+ pdesc->header.pih_blocklen = pdesc64.header.pih_blocklen;
|
||||
+ pdesc->header.pih_pad = pdesc64.header.pih_pad;
|
||||
use64 = 1;
|
||||
}
|
||||
|
||||
- if (pdesc.header.pih_magic != PIH_MAGIC)
|
||||
+ if (pdesc->header.pih_magic != PIH_MAGIC)
|
||||
{
|
||||
fprintf(stderr, "%s: magic mismatch\n", prefix);
|
||||
|
||||
- pdesc.header.pih_magic = 0;
|
||||
fclose(ifp);
|
||||
#ifdef HAVE_ZLIB_H
|
||||
- if (pdesc.flags & PFOR_USEZLIB)
|
||||
+ if (pdesc->flags & PFOR_USEZLIB)
|
||||
gzclose(dfp);
|
||||
else
|
||||
#endif
|
||||
@@ -237,17 +238,17 @@
|
||||
{
|
||||
fclose(wfp);
|
||||
}
|
||||
+ free(pdesc);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- if (pdesc.header.pih_numwords < 1)
|
||||
+ if (pdesc->header.pih_numwords < 1)
|
||||
{
|
||||
fprintf(stderr, "%s: invalid word count\n", prefix);
|
||||
|
||||
- pdesc.header.pih_magic = 0;
|
||||
fclose(ifp);
|
||||
#ifdef HAVE_ZLIB_H
|
||||
- if (pdesc.flags & PFOR_USEZLIB)
|
||||
+ if (pdesc->flags & PFOR_USEZLIB)
|
||||
gzclose(dfp);
|
||||
else
|
||||
#endif
|
||||
@@ -256,17 +257,17 @@
|
||||
{
|
||||
fclose(wfp);
|
||||
}
|
||||
+ free(pdesc);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- if (pdesc.header.pih_blocklen != NUMWORDS)
|
||||
+ if (pdesc->header.pih_blocklen != NUMWORDS)
|
||||
{
|
||||
fprintf(stderr, "%s: size mismatch\n", prefix);
|
||||
|
||||
- pdesc.header.pih_magic = 0;
|
||||
fclose(ifp);
|
||||
#ifdef HAVE_ZLIB_H
|
||||
- if (pdesc.flags & PFOR_USEZLIB)
|
||||
+ if (pdesc->flags & PFOR_USEZLIB)
|
||||
gzclose(dfp);
|
||||
else
|
||||
#endif
|
||||
@@ -275,10 +276,11 @@
|
||||
{
|
||||
fclose(wfp);
|
||||
}
|
||||
+ free(pdesc);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- if (pdesc.flags & PFOR_USEHWMS)
|
||||
+ if (pdesc->flags & PFOR_USEHWMS)
|
||||
{
|
||||
int i;
|
||||
|
||||
@@ -286,27 +288,27 @@
|
||||
{
|
||||
if (fread(pdesc64.hwms, 1, sizeof(pdesc64.hwms), wfp) != sizeof(pdesc64.hwms))
|
||||
{
|
||||
- pdesc.flags &= ~PFOR_USEHWMS;
|
||||
+ pdesc->flags &= ~PFOR_USEHWMS;
|
||||
}
|
||||
- for (i = 0; i < sizeof(pdesc.hwms) / sizeof(pdesc.hwms[0]); i++)
|
||||
+ for (i = 0; i < sizeof(pdesc->hwms) / sizeof(pdesc->hwms[0]); i++)
|
||||
{
|
||||
- pdesc.hwms[i] = pdesc64.hwms[i];
|
||||
+ pdesc->hwms[i] = pdesc64.hwms[i];
|
||||
}
|
||||
}
|
||||
- else if (fread(pdesc.hwms, 1, sizeof(pdesc.hwms), wfp) != sizeof(pdesc.hwms))
|
||||
+ else if (fread(pdesc->hwms, 1, sizeof(pdesc->hwms), wfp) != sizeof(pdesc->hwms))
|
||||
{
|
||||
- pdesc.flags &= ~PFOR_USEHWMS;
|
||||
+ pdesc->flags &= ~PFOR_USEHWMS;
|
||||
}
|
||||
#if DEBUG
|
||||
for (i=1; i<=0xff; i++)
|
||||
{
|
||||
- printf("hwm[%02x] = %d\n", i, pdesc.hwms[i]);
|
||||
+ printf("hwm[%02x] = %d\n", i, pdesc->hwms[i]);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
- return (&pdesc);
|
||||
+ return (pdesc);
|
||||
}
|
||||
|
||||
int
|
||||
@@ -327,12 +329,14 @@
|
||||
if (fseek(pwp->ifp, 0L, 0))
|
||||
{
|
||||
fprintf(stderr, "index magic fseek failed\n");
|
||||
+ free(pwp);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
if (!fwrite((char *) &pwp->header, sizeof(pwp->header), 1, pwp->ifp))
|
||||
{
|
||||
fprintf(stderr, "index magic fwrite failed\n");
|
||||
+ free(pwp);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
@@ -366,6 +370,7 @@
|
||||
}
|
||||
|
||||
pwp->header.pih_magic = 0;
|
||||
+ free(pwp);
|
||||
|
||||
return (0);
|
||||
}
|
||||
diff -Naur cracklib-2.9.11-orig/lib/rules.c cracklib-2.9.11/lib/rules.c
|
||||
--- cracklib-2.9.11-orig/lib/rules.c 2023-04-02 14:15:05.000000000 -0400
|
||||
+++ cracklib-2.9.11/lib/rules.c 2023-07-07 18:58:04.892943574 -0400
|
||||
@@ -80,12 +80,12 @@
|
||||
}
|
||||
|
||||
char *
|
||||
-Reverse(str) /* return a pointer to a reversal */
|
||||
+Reverse(str, area) /* return a pointer to a reversal */
|
||||
char *str;
|
||||
+ char *area;
|
||||
{
|
||||
int i;
|
||||
int j;
|
||||
- static char area[STRINGSIZE];
|
||||
j = i = strlen(str);
|
||||
while (*str)
|
||||
{
|
||||
@@ -96,11 +96,11 @@
|
||||
}
|
||||
|
||||
char *
|
||||
-Uppercase(str) /* return a pointer to an uppercase */
|
||||
+Uppercase(str, area) /* return a pointer to an uppercase */
|
||||
char *str;
|
||||
+ char *area;
|
||||
{
|
||||
char *ptr;
|
||||
- static char area[STRINGSIZE];
|
||||
ptr = area;
|
||||
while (*str)
|
||||
{
|
||||
@@ -113,11 +113,11 @@
|
||||
}
|
||||
|
||||
char *
|
||||
-Lowercase(str) /* return a pointer to an lowercase */
|
||||
+Lowercase(str, area) /* return a pointer to an lowercase */
|
||||
char *str;
|
||||
+ char *area;
|
||||
{
|
||||
char *ptr;
|
||||
- static char area[STRINGSIZE];
|
||||
ptr = area;
|
||||
while (*str)
|
||||
{
|
||||
@@ -130,11 +130,11 @@
|
||||
}
|
||||
|
||||
char *
|
||||
-Capitalise(str) /* return a pointer to an capitalised */
|
||||
+Capitalise(str, area) /* return a pointer to an capitalised */
|
||||
char *str;
|
||||
+ char *area;
|
||||
{
|
||||
char *ptr;
|
||||
- static char area[STRINGSIZE];
|
||||
ptr = area;
|
||||
|
||||
while (*str)
|
||||
@@ -149,11 +149,11 @@
|
||||
}
|
||||
|
||||
char *
|
||||
-Pluralise(string) /* returns a pointer to a plural */
|
||||
+Pluralise(string, area) /* returns a pointer to a plural */
|
||||
char *string;
|
||||
+ char *area;
|
||||
{
|
||||
int length;
|
||||
- static char area[STRINGSIZE];
|
||||
length = strlen(string);
|
||||
strcpy(area, string);
|
||||
|
||||
@@ -190,13 +190,13 @@
|
||||
}
|
||||
|
||||
char *
|
||||
-Substitute(string, old, new) /* returns pointer to a swapped about copy */
|
||||
+Substitute(string, old, new, area) /* returns pointer to a swapped about copy */
|
||||
char *string;
|
||||
char old;
|
||||
char new;
|
||||
+ char *area;
|
||||
{
|
||||
char *ptr;
|
||||
- static char area[STRINGSIZE];
|
||||
ptr = area;
|
||||
while (*string)
|
||||
{
|
||||
@@ -208,12 +208,12 @@
|
||||
}
|
||||
|
||||
char *
|
||||
-Purge(string, target) /* returns pointer to a purged copy */
|
||||
+Purge(string, target, area) /* returns pointer to a purged copy */
|
||||
char *string;
|
||||
char target;
|
||||
+ char *area;
|
||||
{
|
||||
char *ptr;
|
||||
- static char area[STRINGSIZE];
|
||||
ptr = area;
|
||||
while (*string)
|
||||
{
|
||||
@@ -370,13 +370,13 @@
|
||||
}
|
||||
|
||||
char *
|
||||
-PolySubst(string, class, new) /* returns pointer to a swapped about copy */
|
||||
+PolySubst(string, class, new, area) /* returns pointer to a swapped about copy */
|
||||
char *string;
|
||||
char class;
|
||||
char new;
|
||||
+ char *area;
|
||||
{
|
||||
char *ptr;
|
||||
- static char area[STRINGSIZE];
|
||||
ptr = area;
|
||||
while (*string)
|
||||
{
|
||||
@@ -388,12 +388,12 @@
|
||||
}
|
||||
|
||||
char *
|
||||
-PolyPurge(string, class) /* returns pointer to a purged copy */
|
||||
+PolyPurge(string, class, area) /* returns pointer to a purged copy */
|
||||
char *string;
|
||||
char class;
|
||||
+ char *area;
|
||||
{
|
||||
char *ptr;
|
||||
- static char area[STRINGSIZE];
|
||||
ptr = area;
|
||||
while (*string)
|
||||
{
|
||||
@@ -426,39 +426,40 @@
|
||||
}
|
||||
|
||||
char *
|
||||
-Mangle(input, control) /* returns a pointer to a controlled Mangle */
|
||||
+Mangle(input, control, area) /* returns a pointer to a controlled Mangle */
|
||||
char *input;
|
||||
char *control;
|
||||
+ char *area;
|
||||
{
|
||||
int limit;
|
||||
char *ptr;
|
||||
- static char area[STRINGSIZE * 2] = {0};
|
||||
char area2[STRINGSIZE * 2] = {0};
|
||||
strcpy(area, input);
|
||||
|
||||
for (ptr = control; *ptr; ptr++)
|
||||
{
|
||||
+ strcpy(area2, area);
|
||||
switch (*ptr)
|
||||
{
|
||||
case RULE_NOOP:
|
||||
break;
|
||||
case RULE_REVERSE:
|
||||
- strcpy(area, Reverse(area));
|
||||
+ Reverse(area2, area);
|
||||
break;
|
||||
case RULE_UPPERCASE:
|
||||
- strcpy(area, Uppercase(area));
|
||||
+ Uppercase(area2, area);
|
||||
break;
|
||||
case RULE_LOWERCASE:
|
||||
- strcpy(area, Lowercase(area));
|
||||
+ Lowercase(area2, area);
|
||||
break;
|
||||
case RULE_CAPITALISE:
|
||||
- strcpy(area, Capitalise(area));
|
||||
+ Capitalise(area2, area);
|
||||
break;
|
||||
case RULE_PLURALISE:
|
||||
- strcpy(area, Pluralise(area));
|
||||
+ Pluralise(area2, area);
|
||||
break;
|
||||
case RULE_REFLECT:
|
||||
- strcat(area, Reverse(area));
|
||||
+ strcat(area, Reverse(area, area2));
|
||||
break;
|
||||
case RULE_DUPLICATE:
|
||||
strcpy(area2, area);
|
||||
@@ -545,7 +546,6 @@
|
||||
Debug(1, "Mangle: extract: weird argument in '%s'\n", control);
|
||||
return NULL;
|
||||
}
|
||||
- strcpy(area2, area);
|
||||
for (i = 0; length-- && area2[start + i]; i++)
|
||||
{
|
||||
area[i] = area2[start + i];
|
||||
@@ -616,10 +616,10 @@
|
||||
return NULL;
|
||||
} else if (ptr[1] != RULE_CLASS)
|
||||
{
|
||||
- strcpy(area, Purge(area, *(++ptr)));
|
||||
+ Purge(area2, *(++ptr), area);
|
||||
} else
|
||||
{
|
||||
- strcpy(area, PolyPurge(area, ptr[2]));
|
||||
+ PolyPurge(area2, ptr[2], area);
|
||||
ptr += 2;
|
||||
}
|
||||
break;
|
||||
@@ -630,11 +630,11 @@
|
||||
return NULL;
|
||||
} else if (ptr[1] != RULE_CLASS)
|
||||
{
|
||||
- strcpy(area, Substitute(area, ptr[1], ptr[2]));
|
||||
+ Substitute(area2, ptr[1], ptr[2], area);
|
||||
ptr += 2;
|
||||
} else
|
||||
{
|
||||
- strcpy(area, PolySubst(area, ptr[2], ptr[3]));
|
||||
+ PolySubst(area2, ptr[2], ptr[3], area);
|
||||
ptr += 3;
|
||||
}
|
||||
break;
|
||||
111
cracklib-2.9.11-simplistic.patch
Normal file
111
cracklib-2.9.11-simplistic.patch
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
diff -Naur cracklib-2.9.11-orig/lib/fascist.c cracklib-2.9.11/lib/fascist.c
|
||||
--- cracklib-2.9.11-orig/lib/fascist.c 2023-07-07 21:18:25.582821076 -0400
|
||||
+++ cracklib-2.9.11/lib/fascist.c 2023-07-07 21:19:55.130234075 -0400
|
||||
@@ -55,7 +55,6 @@
|
||||
|
||||
"/?p@?p", /* purging out punctuation/symbols/junk */
|
||||
"/?s@?s",
|
||||
- "/?X@?X",
|
||||
|
||||
/* attempt reverse engineering of password strings */
|
||||
|
||||
@@ -454,6 +453,12 @@
|
||||
continue;
|
||||
}
|
||||
|
||||
+ if (len - strlen(mp) >= 3)
|
||||
+ {
|
||||
+ /* purged too much */
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
#ifdef DEBUG
|
||||
printf("%-16s = %-16s (destruct %s)\n", mp, rawtext, r_destructors[i]);
|
||||
#endif
|
||||
@@ -480,6 +485,12 @@
|
||||
continue;
|
||||
}
|
||||
|
||||
+ if (len - strlen(mp) >= 3)
|
||||
+ {
|
||||
+ /* purged too much */
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
#ifdef DEBUG
|
||||
printf("%-16s = %-16s (construct %s)\n", mp, password, r_constructors[i]);
|
||||
#endif
|
||||
@@ -708,6 +719,7 @@
|
||||
char rpassword[STRINGSIZE];
|
||||
char area[STRINGSIZE];
|
||||
uint32_t notfound;
|
||||
+ int len;
|
||||
|
||||
notfound = PW_WORDS(pwp);
|
||||
/* already truncated if from FascistCheck() */
|
||||
@@ -757,6 +769,7 @@
|
||||
return _("it is all whitespace");
|
||||
}
|
||||
|
||||
+ len = strlen(password);
|
||||
i = 0;
|
||||
ptr = password;
|
||||
while (ptr[0] && ptr[1])
|
||||
@@ -768,10 +781,9 @@
|
||||
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)
|
||||
+ /* We were still generating false positives for long passwords.
|
||||
+ Just count systematic double as a single character. */
|
||||
+ if (len - i < MINLEN)
|
||||
{
|
||||
return _("it is too simplistic/systematic");
|
||||
}
|
||||
@@ -804,6 +816,12 @@
|
||||
continue;
|
||||
}
|
||||
|
||||
+ if (len - strlen(a) >= 3)
|
||||
+ {
|
||||
+ /* purged too much */
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
#ifdef DEBUG
|
||||
printf("%-16s (dict)\n", a);
|
||||
#endif
|
||||
@@ -824,6 +842,13 @@
|
||||
{
|
||||
continue;
|
||||
}
|
||||
+
|
||||
+ if (len - strlen(a) >= 3)
|
||||
+ {
|
||||
+ /* purged too much */
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
#ifdef DEBUG
|
||||
printf("%-16s (reversed dict)\n", a);
|
||||
#endif
|
||||
diff -Naur cracklib-2.9.11-orig/util/cracklib-format cracklib-2.9.11/util/cracklib-format
|
||||
--- cracklib-2.9.11-orig/util/cracklib-format 2021-01-22 10:58:14.000000000 -0500
|
||||
+++ cracklib-2.9.11/util/cracklib-format 2023-07-07 21:19:14.854048317 -0400
|
||||
@@ -10,10 +10,12 @@
|
||||
# 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
|
||||
+ sort -u
|
||||
378
cracklib.spec
378
cracklib.spec
|
|
@ -4,59 +4,23 @@
|
|||
|
||||
Summary: A password-checking library
|
||||
Name: cracklib
|
||||
Version: 2.8.22
|
||||
Release: 2%{?dist}
|
||||
Group: System Environment/Libraries
|
||||
Source0: http://prdownloads.sourceforge.net/cracklib/cracklib-%{version}.tar.gz
|
||||
|
||||
# Retrieved at 20091201191719Z.
|
||||
Source1: http://iweb.dl.sourceforge.net/project/cracklib/cracklib-words/2008-05-07/cracklib-words-20080507.gz
|
||||
|
||||
# For man pages.
|
||||
Source2: http://ftp.us.debian.org/debian/pool/main/c/cracklib2/cracklib2_2.8.19-1.debian.tar.gz
|
||||
Source40: http://ftp.us.debian.org/debian/pool/main/c/cracklib2/cracklib2_2.8.19-1.dsc
|
||||
Version: 2.9.11
|
||||
Release: 8%{?dist}
|
||||
URL: https://github.com/cracklib/cracklib
|
||||
License: LGPL-2.1-or-later
|
||||
|
||||
Source0: https://github.com/cracklib/cracklib/releases/download/v%{version}/cracklib-%{version}.tar.gz
|
||||
Source1: https://github.com/cracklib/cracklib/releases/download/v%{version}/cracklib-words-%{version}.gz
|
||||
# From attachment to https://bugzilla.redhat.com/show_bug.cgi?id=627449
|
||||
Source3: cracklib.default.zh_CN.po
|
||||
Source2: cracklib.default.zh_CN.po
|
||||
# No upstream source for this, just words missing from the current cracklib-words
|
||||
Source3: missing-words.gz
|
||||
|
||||
Source10: http://ftp.cerias.purdue.edu/pub/dict/wordlists/computer/Domains.gz
|
||||
Source11: http://ftp.cerias.purdue.edu/pub/dict/wordlists/computer/Dosref.gz
|
||||
Source12: http://ftp.cerias.purdue.edu/pub/dict/wordlists/computer/Ftpsites.gz
|
||||
Source13: http://ftp.cerias.purdue.edu/pub/dict/wordlists/computer/Jargon.gz
|
||||
Source14: http://ftp.cerias.purdue.edu/pub/dict/wordlists/computer/common-passwords.txt.gz
|
||||
Source15: http://ftp.cerias.purdue.edu/pub/dict/wordlists/computer/etc-hosts.gz
|
||||
Source16: http://ftp.cerias.purdue.edu/pub/dict/wordlists/movieTV/Movies.gz
|
||||
Source17: http://ftp.cerias.purdue.edu/pub/dict/wordlists/movieTV/Python.gz
|
||||
Source18: http://ftp.cerias.purdue.edu/pub/dict/wordlists/movieTV/Trek.gz
|
||||
Source19: http://ftp.cerias.purdue.edu/pub/dict/wordlists/literature/LCarrol.gz
|
||||
Source20: http://ftp.cerias.purdue.edu/pub/dict/wordlists/literature/Paradise.Lost.gz
|
||||
Source21: http://ftp.cerias.purdue.edu/pub/dict/wordlists/literature/cartoon.gz
|
||||
Source22: http://ftp.cerias.purdue.edu/pub/dict/wordlists/literature/myths-legends.gz
|
||||
Source23: http://ftp.cerias.purdue.edu/pub/dict/wordlists/literature/sf.gz
|
||||
Source24: http://ftp.cerias.purdue.edu/pub/dict/wordlists/literature/shakespeare.gz
|
||||
Source25: http://ftp.cerias.purdue.edu/pub/dict/wordlists/names/ASSurnames.gz
|
||||
Source26: http://ftp.cerias.purdue.edu/pub/dict/wordlists/names/Congress.gz
|
||||
Source27: http://ftp.cerias.purdue.edu/pub/dict/wordlists/names/Family-Names.gz
|
||||
Source28: http://ftp.cerias.purdue.edu/pub/dict/wordlists/names/Given-Names.gz
|
||||
Source29: http://ftp.cerias.purdue.edu/pub/dict/wordlists/names/famous.gz
|
||||
Source30: http://ftp.cerias.purdue.edu/pub/dict/wordlists/names/fast-names.gz
|
||||
Source31: http://ftp.cerias.purdue.edu/pub/dict/wordlists/names/female-names.gz
|
||||
Source32: http://ftp.cerias.purdue.edu/pub/dict/wordlists/names/male-names.gz
|
||||
Source33: http://ftp.cerias.purdue.edu/pub/dict/wordlists/names/names.french.gz
|
||||
Source34: http://ftp.cerias.purdue.edu/pub/dict/wordlists/names/names.hp.gz
|
||||
Source35: http://ftp.cerias.purdue.edu/pub/dict/wordlists/names/other-names.gz
|
||||
Source36: http://ftp.cerias.purdue.edu/pub/dict/wordlists/names/surnames.finnish.gz
|
||||
Patch: cracklib-2.9.11-packlib-reentrant.patch
|
||||
Patch: cracklib-2.9.11-simplistic.patch
|
||||
|
||||
# No upstream source for this; it came in as a bugzilla attachment.
|
||||
Source37: pass_file.gz
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=557592
|
||||
# https://bugzilla.redhat.com/attachment.cgi?id=386022
|
||||
Source38: ry-threshold10.txt
|
||||
Patch1: cracklib-2.8.15-inttypes.patch
|
||||
URL: http://sourceforge.net/projects/cracklib/
|
||||
License: LGPLv2+
|
||||
Buildroot: %{_tmppath}/%{name}-%{version}-root
|
||||
BuildRequires: python-devel, words, autoconf, automake, gettext, libtool
|
||||
BuildRequires: gcc
|
||||
BuildRequires: words, gettext
|
||||
BuildRequires: gettext-autopoint
|
||||
BuildRequires: zlib-devel
|
||||
Conflicts: cracklib-dicts < 2.8
|
||||
|
|
@ -83,26 +47,16 @@ CrackLib, you will also want to install the cracklib-dicts package.
|
|||
|
||||
%package devel
|
||||
Summary: Development files needed for building applications which use cracklib
|
||||
Group: Development/Libraries
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||
|
||||
%description devel
|
||||
The cracklib-devel package contains the header files and libraries needed
|
||||
for compiling applications which use cracklib.
|
||||
|
||||
%package python
|
||||
Summary: Python bindings for applications which use cracklib
|
||||
Group: Development/Libraries
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
|
||||
%description python
|
||||
The cracklib-python package contains a module which permits applications
|
||||
written in the Python programming language to use cracklib.
|
||||
|
||||
%package dicts
|
||||
Summary: The standard CrackLib dictionaries
|
||||
Group: System Environment/Libraries
|
||||
BuildRequires: words >= 2-13
|
||||
BuildRequires: make
|
||||
Requires: cracklib = %{version}-%{release}
|
||||
|
||||
%description dicts
|
||||
|
|
@ -114,104 +68,74 @@ contains the utilities necessary for the creation of new dictionaries.
|
|||
If you are installing CrackLib, you should also install cracklib-dicts.
|
||||
|
||||
%prep
|
||||
%setup -q -a 2
|
||||
cp lib/packer.h lib/packer.h.in
|
||||
%autosetup -p 1
|
||||
|
||||
# Replace zn_CN.po with one that wasn't mis-transcoded at some point.
|
||||
grep '????????????????' po/zh_CN.po
|
||||
install -p -m 644 %{SOURCE3} po/zh_CN.po
|
||||
%patch1 -p1 -b .inttypes
|
||||
autoreconf -f -i
|
||||
install -p -m 644 %{SOURCE2} po/zh_CN.po
|
||||
|
||||
mkdir cracklib-dicts
|
||||
for dict in %{SOURCE10} %{SOURCE11} %{SOURCE12} %{SOURCE13} %{SOURCE14} \
|
||||
%{SOURCE15} %{SOURCE16} %{SOURCE17} %{SOURCE18} %{SOURCE19} \
|
||||
%{SOURCE20} %{SOURCE21} %{SOURCE22} %{SOURCE23} %{SOURCE24} \
|
||||
%{SOURCE25} %{SOURCE26} %{SOURCE27} %{SOURCE28} %{SOURCE29} \
|
||||
%{SOURCE30} %{SOURCE31} %{SOURCE32} %{SOURCE33} %{SOURCE34} \
|
||||
%{SOURCE35} %{SOURCE36} %{SOURCE37} %{SOURCE38} %{SOURCE1}
|
||||
for dict in %{SOURCE3} %{SOURCE1}
|
||||
do
|
||||
cp -fv ${dict} cracklib-dicts/
|
||||
done
|
||||
chmod +x util/cracklib-format
|
||||
|
||||
%build
|
||||
%configure --with-pic --with-python --with-default-dict=%{dictpath} --disable-static
|
||||
# Use the dictionary from the build to test
|
||||
sed -i 's,util/cracklib-check <,util/cracklib-check $(DESTDIR)/$(DEFAULT_CRACKLIB_DICT) <,' Makefile.in
|
||||
%configure --with-pic \
|
||||
--without-python \
|
||||
--with-default-dict=%{dictpath} --disable-static
|
||||
make -C po update-gmo
|
||||
make
|
||||
|
||||
%install
|
||||
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
|
||||
make install DESTDIR=$RPM_BUILD_ROOT
|
||||
make install DESTDIR=$RPM_BUILD_ROOT INSTALL="install -c -p" -C python
|
||||
%make_install 'pythondir=${pyexecdir}'
|
||||
./util/cracklib-format cracklib-dicts/* | \
|
||||
./util/cracklib-packer $RPM_BUILD_ROOT/%{dictpath}
|
||||
./util/cracklib-format $RPM_BUILD_ROOT/%{dictdir}/cracklib-small | \
|
||||
./util/cracklib-packer $RPM_BUILD_ROOT/%{dictdir}/cracklib-small
|
||||
rm -f $RPM_BUILD_ROOT/%{dictdir}/cracklib-small
|
||||
sed s,/usr/lib/cracklib_dict,%{dictpath},g lib/crack.h > $RPM_BUILD_ROOT/%{_includedir}/crack.h
|
||||
ln -s cracklib-format $RPM_BUILD_ROOT/%{_sbindir}/mkdict
|
||||
ln -s cracklib-packer $RPM_BUILD_ROOT/%{_sbindir}/packer
|
||||
touch $RPM_BUILD_ROOT/top
|
||||
./util/cracklib-packer %{buildroot}%{dictpath}
|
||||
./util/cracklib-format %{buildroot}%{dictdir}/cracklib-small | \
|
||||
./util/cracklib-packer %{buildroot}%{dictdir}/cracklib-small
|
||||
rm -f %{buildroot}%{dictdir}/cracklib-small
|
||||
sed s,/usr/lib/cracklib_dict,%{dictpath},g lib/crack.h > %{buildroot}%{_includedir}/crack.h
|
||||
ln -s cracklib-format %{buildroot}%{_sbindir}/mkdict
|
||||
# packer link removed as it clashes with hashicorp's packer binary.
|
||||
#ln -s cracklib-packer %{buildroot}/%{_sbindir}/packer
|
||||
touch %{buildroot}/top
|
||||
|
||||
toprelpath=..
|
||||
touch $RPM_BUILD_ROOT/top
|
||||
while ! test -f $RPM_BUILD_ROOT/%{_libdir}/$toprelpath/top ; do
|
||||
touch %{buildroot}/top
|
||||
while ! test -f %{buildroot}%{_libdir}/$toprelpath/top ; do
|
||||
toprelpath=../$toprelpath
|
||||
done
|
||||
rm -f $RPM_BUILD_ROOT/top
|
||||
rm -f %{buildroot}/top
|
||||
if test %{dictpath} != %{_libdir}/cracklib_dict ; then
|
||||
ln -s $toprelpath%{dictpath}.hwm $RPM_BUILD_ROOT/%{_libdir}/cracklib_dict.hwm
|
||||
ln -s $toprelpath%{dictpath}.pwd $RPM_BUILD_ROOT/%{_libdir}/cracklib_dict.pwd
|
||||
ln -s $toprelpath%{dictpath}.pwi $RPM_BUILD_ROOT/%{_libdir}/cracklib_dict.pwi
|
||||
ln -s $toprelpath%{dictpath}.hwm %{buildroot}%{_libdir}/cracklib_dict.hwm
|
||||
ln -s $toprelpath%{dictpath}.pwd %{buildroot}%{_libdir}/cracklib_dict.pwd
|
||||
ln -s $toprelpath%{dictpath}.pwi %{buildroot}%{_libdir}/cracklib_dict.pwi
|
||||
fi
|
||||
rm -f $RPM_BUILD_ROOT/%{_libdir}/python*/site-packages/_cracklib*.*a
|
||||
rm -f $RPM_BUILD_ROOT/%{_libdir}/libcrack.la
|
||||
rm -f %{buildroot}%{_libdir}/python*/site-packages/_cracklib*.*a
|
||||
rm -f %{buildroot}%{_libdir}/libcrack.la
|
||||
|
||||
mkdir -p $RPM_BUILD_ROOT/%{_mandir}/man{3,8}
|
||||
install -p -m644 debian/*.3 $RPM_BUILD_ROOT/%{_mandir}/man3/
|
||||
install -p -m644 debian/*.8 $RPM_BUILD_ROOT/%{_mandir}/man8/
|
||||
mkdir -p %{buildroot}%{_mandir}/man{3,8}
|
||||
install -p -m644 doc/*.3 %{buildroot}%{_mandir}/man3/
|
||||
install -p -m644 doc/*.8 %{buildroot}%{_mandir}/man8/
|
||||
if ! test -s %{buildroot}%{_mandir}/man8/cracklib-packer.8 ; then
|
||||
echo .so man8/cracklib-format.8 > %{buildroot}%{_mandir}/man8/cracklib-packer.8
|
||||
fi
|
||||
if ! test -s %{buildroot}%{_mandir}/man8/cracklib-unpacker.8 ; then
|
||||
echo .so man8/cracklib-format.8 > %{buildroot}%{_mandir}/man8/cracklib-unpacker.8
|
||||
fi
|
||||
|
||||
%find_lang %{name}
|
||||
|
||||
%check
|
||||
# We want to check that the new library is able to open the new dictionaries,
|
||||
# using the new python module.
|
||||
LD_LIBRARY_PATH=$RPM_BUILD_ROOT/%{_libdir} %{__python} 2>&1 << EOF
|
||||
import string, sys
|
||||
# Prepend buildroot-specific variations of the python path to the python path.
|
||||
syspath2=[]
|
||||
for element in sys.path:
|
||||
syspath2.append("$RPM_BUILD_ROOT/" + element)
|
||||
syspath2.reverse()
|
||||
for element in syspath2:
|
||||
sys.path.insert(0,element)
|
||||
# Now actually do the test. If we get a different result, or throw an
|
||||
# exception, the script will end with the error.
|
||||
import cracklib
|
||||
try:
|
||||
s = cracklib.FascistCheck("cracklib", "$RPM_BUILD_ROOT/%{dictpath}")
|
||||
except ValueError, message:
|
||||
expected = "it is based on a dictionary word"
|
||||
if message != expected:
|
||||
print "Got unexpected result \"%s\"," % messgae,
|
||||
print "instead of expected value of \"%s\"." % expected
|
||||
sys.exit(1)
|
||||
print "Got expected result \"%s\"," % message
|
||||
sys.exit(0)
|
||||
finally:
|
||||
sys.exit(0)
|
||||
EOF
|
||||
make test DESTDIR=%{buildroot}
|
||||
|
||||
%clean
|
||||
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
%post -p /sbin/ldconfig
|
||||
|
||||
%postun -p /sbin/ldconfig
|
||||
|
||||
%triggerpostun -p /sbin/ldconfig -- cracklib < 2.7-24
|
||||
%ldconfig_scriptlets
|
||||
|
||||
%files -f %{name}.lang
|
||||
%defattr(-,root,root)
|
||||
%doc README README-WORDS NEWS README-LICENSE AUTHORS COPYING.LIB
|
||||
%doc README README-WORDS NEWS README-LICENSE AUTHORS
|
||||
%license COPYING.LIB
|
||||
%{_libdir}/libcrack.so.*
|
||||
%dir %{_datadir}/cracklib
|
||||
%{_datadir}/cracklib/cracklib.magic
|
||||
|
|
@ -219,26 +143,196 @@ EOF
|
|||
%{_mandir}/man8/*
|
||||
|
||||
%files devel
|
||||
%defattr(-,root,root)
|
||||
%{_includedir}/*
|
||||
%{_libdir}/libcrack.so
|
||||
%{_mandir}/man3/*
|
||||
|
||||
%files dicts
|
||||
%defattr(-,root,root)
|
||||
%dir %{_datadir}/cracklib
|
||||
%{_datadir}/cracklib/pw_dict.*
|
||||
%{_datadir}/cracklib/cracklib-small.*
|
||||
%{_libdir}/cracklib_dict.*
|
||||
%{_sbindir}/mkdict
|
||||
%{_sbindir}/packer
|
||||
|
||||
%files python
|
||||
%defattr(-,root,root)
|
||||
%{_libdir}/python*/site-packages/_cracklib*.so
|
||||
%{_libdir}/../lib/python*/site-packages/*.py*
|
||||
|
||||
%changelog
|
||||
* Wed Jul 23 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.11-8
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
|
||||
|
||||
* Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.11-7
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
|
||||
|
||||
* Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.11-6
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
|
||||
|
||||
* Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.11-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.11-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Fri Aug 04 2023 Dmitry Belyavskiy <dbelyavs@redhat.com> - 2.9.11-3
|
||||
- migrated to SPDX license
|
||||
|
||||
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.11-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
|
||||
|
||||
* Fri Jul 07 2023 Paul Wouters <paul.wouters@aiven.io - 2.9.11-1
|
||||
- Resolves: rhbz#2123955 cracklib-2.9.11 is available
|
||||
- Remove old patches, port remaining patches to 2.9.11
|
||||
- Use man pages from doc/ instead of pulling them from debian
|
||||
|
||||
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.7-31
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
||||
|
||||
* Tue Aug 30 2022 Parag Nemade <pnemade AT redhat DOT com> - 2.9.7-30
|
||||
- As -dicts subpackage installs files under %%{_libdir} path it should not be noarch
|
||||
- this fixes FTBFS on F37+
|
||||
|
||||
* Wed Jul 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.7-29
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||
|
||||
* Wed Jan 19 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.6-28
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
|
||||
|
||||
* Mon Aug 30 2021 Paul Wouters <paul.wouters@aiven.io> - 2.9.6-27
|
||||
- Resolves: rhbz#1994196 Remove /usr/bin/packer symbolic link
|
||||
|
||||
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.6-26
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
|
||||
|
||||
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.6-25
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||
|
||||
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.6-24
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
|
||||
* Mon Jul 13 2020 Tom Stellard <tstellar@redhat.com> - 2.9.6-23
|
||||
- Use make macros
|
||||
- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro
|
||||
|
||||
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.6-22
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||
|
||||
* Fri Aug 9 2019 Tomáš Mráz <tmraz@redhat.com> - 2.9.6-21
|
||||
- Drop Python 2 bindings completely
|
||||
|
||||
* Wed Jul 24 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.6-20
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||
|
||||
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.6-19
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||
|
||||
* Mon Nov 26 2018 Tomáš Mráz <tmraz@redhat.com> - 2.9.6-18
|
||||
- Fix regression in dictionary creation and lookup
|
||||
|
||||
* Wed Oct 10 2018 Tomáš Mráz <tmraz@redhat.com> - 2.9.6-17
|
||||
- Fix minor bug found in the Coverity scan
|
||||
|
||||
* Tue Oct 9 2018 Tomáš Mráz <tmraz@redhat.com> - 2.9.6-16
|
||||
- Updated translations
|
||||
|
||||
* Fri Jul 13 2018 Tomáš Mráz <tmraz@redhat.com> - 2.9.6-15
|
||||
- The test must use the dictionary from the build
|
||||
|
||||
* Thu Jul 12 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.6-14
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||
|
||||
* Wed Feb 21 2018 Tomáš Mráz <tmraz@redhat.com> - 2.9.6-13
|
||||
- Drop Python 2 support in RHEL
|
||||
|
||||
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.6-12
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||
|
||||
* Sat Feb 03 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 2.9.6-11
|
||||
- Switch to %%ldconfig_scriptlets
|
||||
|
||||
* Wed Jan 03 2018 Iryna Shcherbina <ishcherb@redhat.com> - 2.9.6-10
|
||||
- Update Python 2 dependency declarations to new packaging standards
|
||||
(See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3)
|
||||
|
||||
* Sun Aug 20 2017 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.9.6-9
|
||||
- Add Provides for the old name without %%_isa
|
||||
|
||||
* Sat Aug 19 2017 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.9.6-8
|
||||
- Python 2 binary package renamed to python2-cracklib
|
||||
See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3
|
||||
|
||||
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.6-7
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
||||
|
||||
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.6-6
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
||||
|
||||
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.6-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
|
||||
|
||||
* Thu Dec 8 2016 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.9.6-4
|
||||
- fix CVE-2016-6318 - avoid overflows in GECOS handling and mangling password (#1364944)
|
||||
|
||||
* Tue Jul 19 2016 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.9.6-3
|
||||
- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages
|
||||
|
||||
* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.6-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
|
||||
|
||||
* Fri Oct 23 2015 Tomáš Mráz <tmraz@redhat.com> - 2.9.6-1
|
||||
- new upstream release
|
||||
- cleanup of the word lists
|
||||
|
||||
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.9.1-6
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
||||
|
||||
* Sat Aug 16 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.9.1-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
|
||||
|
||||
* Fri Jul 11 2014 Tom Callaway <spot@fedoraproject.org> - 2.9.1-4
|
||||
- fix license handling
|
||||
|
||||
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.9.1-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
|
||||
|
||||
* Wed Feb 5 2014 Tomáš Mráz <tmraz@redhat.com> - 2.9.1-2
|
||||
- move python files to libdir
|
||||
|
||||
* Mon Dec 9 2013 Tomáš Mráz <tmraz@redhat.com> - 2.9.1-1
|
||||
- new upstream release
|
||||
|
||||
* Mon Dec 2 2013 Tomáš Mráz <tmraz@redhat.com> - 2.9.0-9
|
||||
- update only .gmo files to avoid multilib conflicts (#1036305)
|
||||
|
||||
* Thu Nov 28 2013 Tomáš Mráz <tmraz@redhat.com> - 2.9.0-8
|
||||
- updated translations
|
||||
|
||||
* Thu Oct 31 2013 Tomáš Mráz <tmraz@redhat.com> - 2.9.0-7
|
||||
- do not remove any printable characters in cracklib-format
|
||||
|
||||
* Thu Oct 31 2013 Tomáš Mráz <tmraz@redhat.com> - 2.9.0-6
|
||||
- fix the broken zh_CN translation
|
||||
|
||||
* Tue Sep 3 2013 Tomáš Mráz <tmraz@redhat.com> - 2.9.0-5
|
||||
- make the simplistic check and the purging of special characters much
|
||||
less aggressive (#1003624, #985378)
|
||||
|
||||
* Wed Aug 28 2013 Tomáš Mráz <tmraz@redhat.com> - 2.9.0-4
|
||||
- revert compression of the dictionaries as the performance penalty is too big
|
||||
|
||||
* Wed Aug 21 2013 Tomáš Mráz <tmraz@redhat.com> - 2.9.0-3
|
||||
- fix the python module to work with compressed dictionaries (#972542)
|
||||
- fix various dictionary lookup errors (#986400, #986401)
|
||||
- make the library reentrant and fix compilation warnings
|
||||
|
||||
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.9.0-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
|
||||
|
||||
* Mon Jun 3 2013 Nalin Dahyabhai <nalin@redhat.com> - 2.9.0-1
|
||||
- update to 2.9.0 (#970065)
|
||||
- adds FascistCheckUser()
|
||||
- go ahead and compress the main dictionary, since we're linking with zlib
|
||||
anyway
|
||||
|
||||
* Tue Jan 29 2013 Nalin Dahyabhai <nalin@redhat.com> - 2.8.22-3
|
||||
- point cracklib-packer and cracklib-unpacker man pages to cracklib-format
|
||||
(internal tooling)
|
||||
|
||||
* Wed Dec 19 2012 Nalin Dahyabhai <nalin@redhat.com> - 2.8.22-2
|
||||
- add missing buildrequires: on zlib-devel (#888876)
|
||||
|
||||
|
|
|
|||
44782
ry-threshold10.txt
44782
ry-threshold10.txt
File diff suppressed because it is too large
Load diff
35
sources
35
sources
|
|
@ -1,32 +1,3 @@
|
|||
16cb1a55d7a2fdf92ca52d89ff1f622e ASSurnames.gz
|
||||
d5b23f17981b3dff16532e2b2878dcb8 Congress.gz
|
||||
176684d648b795c599e2125ade7fbe10 Domains.gz
|
||||
bc7edfe2cc34e80b1a74753b1f215c73 Dosref.gz
|
||||
922c958fbff2c5428bba5f75bcf4d090 Family-Names.gz
|
||||
528cd34f1a0537a21d480621f2573527 Ftpsites.gz
|
||||
4a9086b08e038167cddf0d4609fe046b Given-Names.gz
|
||||
1e90a81ed180165d2ae3d7e97c47d8b5 Jargon.gz
|
||||
ffc528048927ed767ba1c5d67c2c1cd1 LCarrol.gz
|
||||
f45610404e56901d627932895899c6bf Movies.gz
|
||||
6a6daa254215d18441acb7c72bbe4b01 Paradise.Lost.gz
|
||||
c575d3302d3a6beb9daef6a492ba024a Python.gz
|
||||
d2af1d5bfb80515129632a5d5cd106f7 Trek.gz
|
||||
c262148af56614d9b33946c4758e101b cartoon.gz
|
||||
5e35a78582c233f8b703f1dabf264788 common-passwords.txt.gz
|
||||
9296e6866c48522d35440c921dfac538 etc-hosts.gz
|
||||
056193ded99b178046e87e6fb4300ebf famous.gz
|
||||
5857e228e763eb8300a8f2d3a424d766 fast-names.gz
|
||||
67d56b0639e8edeacdf804005cb13afb female-names.gz
|
||||
2118799e73046f4a386a2e8b8d244d3b male-names.gz
|
||||
18a1a7c79821701d8c7e8ee1e3d81361 myths-legends.gz
|
||||
453c3842bb232d50fb45935e18be4250 names.french.gz
|
||||
ca42f876220de24d5cc1d8f3645b339c names.hp.gz
|
||||
f70810a2ba08f95df6787afe0eba2907 other-names.gz
|
||||
a2bd31ce25a3057b61d2e5a1182d93a9 sf.gz
|
||||
15ec61296de799eaa8111cfabbcbb44f shakespeare.gz
|
||||
c03b38448aefcde059e6fcfb20784f2c surnames.finnish.gz
|
||||
6e76a087a646ede5eba05e9259fd84d4 pass_file.gz
|
||||
7fa6ba0cd50e7f9ccaf4707c810b14f1 cracklib-words-20080507.gz
|
||||
12936e97cc34a28f2efec62e115a60e1 cracklib2_2.8.19-1.debian.tar.gz
|
||||
bf8714368e0a485472b6ad7c4dba06a3 cracklib2_2.8.19-1.dsc
|
||||
463177b5c29c7a598c991e12a4898e06 cracklib-2.8.22.tar.gz
|
||||
SHA512 (cracklib-2.9.11.tar.gz) = 9e73a715c8f82723abc36b08906e212aaf79a7f6dfa560c6a98963b1e63aa21f7b612f285a639a41ec9eec7025aa2c16f702aad934cd30bc995f470d62ee4bc3
|
||||
SHA512 (cracklib-words-2.9.11.gz) = d1983e8e8fcb9abee4701581d66008eda2d7ad6ee8d017b7fed225b71bd333fa6199338f37fd120c1c6bf1c8a75025692f4118d97e8c384e578000bed59c6aed
|
||||
SHA512 (missing-words.gz) = 50afb5538ddd15de997883f5ff6925d9084117851cfdcfc02f05c28304d6c17b46ea669fe626ad819e732b6f291f308194300c9db9b110a5c15a4e5d97ca6caa
|
||||
|
|
|
|||
64
tests/ABI-compatibility/Makefile
Normal file
64
tests/ABI-compatibility/Makefile
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
#
|
||||
# Makefile of /CoreOS/cracklib/Sanity/ABI-compatibility
|
||||
# Description: Test if the ABI hasn't changed
|
||||
# Author: Hubert Kario <hkario@redhat.com>
|
||||
#
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
#
|
||||
# Copyright (c) 2013 Red Hat, Inc. All rights reserved.
|
||||
#
|
||||
# This copyrighted material is made available to anyone wishing
|
||||
# to use, modify, copy, or redistribute it subject to the terms
|
||||
# and conditions of the GNU General Public License version 2.
|
||||
#
|
||||
# This program is distributed in the hope that it will be
|
||||
# useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
# PURPOSE. See the GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public
|
||||
# License along with this program; if not, write to the Free
|
||||
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
# Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
export TEST=/CoreOS/cracklib/Sanity/ABI-compatibility
|
||||
export TESTVERSION=1.0
|
||||
|
||||
BUILT_FILES=
|
||||
|
||||
FILES=$(METADATA) runtest.sh Makefile PURPOSE
|
||||
|
||||
.PHONY: all install download clean
|
||||
|
||||
run: $(FILES) build
|
||||
./runtest.sh
|
||||
|
||||
build: $(BUILT_FILES)
|
||||
test -x runtest.sh || chmod a+x runtest.sh
|
||||
|
||||
clean:
|
||||
rm -f *~ $(BUILT_FILES)
|
||||
|
||||
|
||||
include /usr/share/rhts/lib/rhts-make.include
|
||||
|
||||
$(METADATA): Makefile
|
||||
@echo "Owner: Hubert Kario <hkario@redhat.com>" > $(METADATA)
|
||||
@echo "Name: $(TEST)" >> $(METADATA)
|
||||
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
|
||||
@echo "Path: $(TEST_DIR)" >> $(METADATA)
|
||||
@echo "Description: Test if the ABI hasn't changed" >> $(METADATA)
|
||||
@echo "Type: Sanity" >> $(METADATA)
|
||||
@echo "TestTime: 5m" >> $(METADATA)
|
||||
@echo "RunFor: cracklib" >> $(METADATA)
|
||||
@echo "Requires: cracklib cracklib-devel gcc words ltrace" >> $(METADATA)
|
||||
@echo "Priority: Normal" >> $(METADATA)
|
||||
@echo "License: GPLv2" >> $(METADATA)
|
||||
@echo "Confidential: no" >> $(METADATA)
|
||||
@echo "Destructive: no" >> $(METADATA)
|
||||
@echo "Releases: -RHEL3 -RHEL4" >> $(METADATA)
|
||||
|
||||
rhts-lint $(METADATA)
|
||||
3
tests/ABI-compatibility/PURPOSE
Normal file
3
tests/ABI-compatibility/PURPOSE
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
PURPOSE of /CoreOS/cracklib/Sanity/ABI-compatibility
|
||||
Description: Test if the ABI hasn't changed
|
||||
Author: Hubert Kario <hkario@redhat.com>
|
||||
81
tests/ABI-compatibility/runtest.sh
Executable file
81
tests/ABI-compatibility/runtest.sh
Executable file
|
|
@ -0,0 +1,81 @@
|
|||
#!/bin/bash
|
||||
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
#
|
||||
# runtest.sh of /CoreOS/cracklib/Sanity/ABI-compatibility
|
||||
# Description: Test if the ABI hasn't changed
|
||||
# Author: Hubert Kario <hkario@redhat.com>
|
||||
#
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
#
|
||||
# Copyright (c) 2013 Red Hat, Inc. All rights reserved.
|
||||
#
|
||||
# This copyrighted material is made available to anyone wishing
|
||||
# to use, modify, copy, or redistribute it subject to the terms
|
||||
# and conditions of the GNU General Public License version 2.
|
||||
#
|
||||
# This program is distributed in the hope that it will be
|
||||
# useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
# PURPOSE. See the GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public
|
||||
# License along with this program; if not, write to the Free
|
||||
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
# Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
# Include Beaker environment
|
||||
. /usr/bin/rhts-environment.sh || exit 1
|
||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
||||
|
||||
PACKAGE="cracklib"
|
||||
|
||||
if rlIsRHEL 5; then
|
||||
PACKAGES="cracklib gcc words ltrace"
|
||||
else
|
||||
PACKAGES="cracklib cracklib-devel gcc words ltrace"
|
||||
fi
|
||||
|
||||
rlJournalStart
|
||||
rlPhaseStartSetup
|
||||
for PKG in $PACKAGES; do
|
||||
rlAssertRpm $PKG
|
||||
done
|
||||
rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory"
|
||||
rlRun "if [ ! -e /usr/share/cracklib/pw_dict.pwi ]; then create-cracklib-dict /usr/share/dict/words; fi" 0 "Create a cracklib dictionary if not already present"
|
||||
rlRun "pushd $TmpDir"
|
||||
rlRun "cat > test.c <<_EOF_
|
||||
#include <stdio.h>
|
||||
#include <crack.h>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
char const *dict = \"/usr/share/cracklib/pw_dict\";
|
||||
char const *msg = NULL;
|
||||
msg = FascistCheck(\"AAAAAAAA\", dict);
|
||||
if (msg == 0)
|
||||
return 1;
|
||||
else
|
||||
{
|
||||
printf(\"%s\\n\", msg);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
_EOF_" 0 "Create test application"
|
||||
rlPhaseEnd
|
||||
|
||||
rlPhaseStartTest
|
||||
rlRun "gcc -O0 test.c -lcrack -Wall -o test" 0 "Compile the program"
|
||||
rlRun "./test" 0 "Run the program"
|
||||
rlRun "ltrace -o ltrace.out ./test" 0 "Run the program with ltrace"
|
||||
rlRun "grep FascistCheck ltrace.out" 0 "Check if it actually uses the library function"
|
||||
rlPhaseEnd
|
||||
|
||||
rlPhaseStartCleanup
|
||||
rlRun "popd"
|
||||
rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
|
||||
rlPhaseEnd
|
||||
rlJournalPrintText
|
||||
rlJournalEnd
|
||||
63
tests/Localization/Makefile
Normal file
63
tests/Localization/Makefile
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
#
|
||||
# Makefile of /CoreOS/cracklib/Sanity/Localization
|
||||
# Description: Check if package localization is correct
|
||||
# Author: Hubert Kario <hkario@redhat.com>
|
||||
#
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
#
|
||||
# Copyright (c) 2014 Red Hat, Inc.
|
||||
#
|
||||
# This copyrighted material is made available to anyone wishing
|
||||
# to use, modify, copy, or redistribute it subject to the terms
|
||||
# and conditions of the GNU General Public License version 2.
|
||||
#
|
||||
# This program is distributed in the hope that it will be
|
||||
# useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
# PURPOSE. See the GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public
|
||||
# License along with this program; if not, write to the Free
|
||||
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
# Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
export TEST=/CoreOS/cracklib/Sanity/Localization
|
||||
export TESTVERSION=1.0
|
||||
|
||||
BUILT_FILES=
|
||||
|
||||
FILES=$(METADATA) runtest.sh Makefile PURPOSE
|
||||
|
||||
.PHONY: all install download clean
|
||||
|
||||
run: $(FILES) build
|
||||
./runtest.sh
|
||||
|
||||
build: $(BUILT_FILES)
|
||||
test -x runtest.sh || chmod a+x runtest.sh
|
||||
|
||||
clean:
|
||||
rm -f *~ $(BUILT_FILES)
|
||||
|
||||
|
||||
include /usr/share/rhts/lib/rhts-make.include
|
||||
|
||||
$(METADATA): Makefile
|
||||
@echo "Owner: Hubert Kario <hkario@redhat.com>" > $(METADATA)
|
||||
@echo "Name: $(TEST)" >> $(METADATA)
|
||||
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
|
||||
@echo "Path: $(TEST_DIR)" >> $(METADATA)
|
||||
@echo "Description: Check if package localization is correct" >> $(METADATA)
|
||||
@echo "Type: Sanity" >> $(METADATA)
|
||||
@echo "TestTime: 5m" >> $(METADATA)
|
||||
@echo "RunFor: cracklib" >> $(METADATA)
|
||||
@echo "Requires: cracklib" >> $(METADATA)
|
||||
@echo "Priority: Normal" >> $(METADATA)
|
||||
@echo "License: GPLv2" >> $(METADATA)
|
||||
@echo "Confidential: no" >> $(METADATA)
|
||||
@echo "Destructive: no" >> $(METADATA)
|
||||
|
||||
rhts-lint $(METADATA)
|
||||
3
tests/Localization/PURPOSE
Normal file
3
tests/Localization/PURPOSE
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
PURPOSE of /CoreOS/cracklib/Sanity/Localization
|
||||
Description: Check if package localization is correct
|
||||
Author: Hubert Kario <hkario@redhat.com>
|
||||
125
tests/Localization/runtest.sh
Executable file
125
tests/Localization/runtest.sh
Executable file
|
|
@ -0,0 +1,125 @@
|
|||
#!/bin/bash
|
||||
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
#
|
||||
# runtest.sh of /CoreOS/cracklib/Sanity/Localization
|
||||
# Description: Check if package localization is correct
|
||||
# Author: Hubert Kario <hkario@redhat.com>
|
||||
#
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
#
|
||||
# Copyright (c) 2014 Red Hat, Inc.
|
||||
#
|
||||
# This copyrighted material is made available to anyone wishing
|
||||
# to use, modify, copy, or redistribute it subject to the terms
|
||||
# and conditions of the GNU General Public License version 2.
|
||||
#
|
||||
# This program is distributed in the hope that it will be
|
||||
# useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
# PURPOSE. See the GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public
|
||||
# License along with this program; if not, write to the Free
|
||||
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
# Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
# Include Beaker environment
|
||||
. /usr/bin/rhts-environment.sh || exit 1
|
||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
||||
|
||||
PACKAGE="cracklib"
|
||||
|
||||
rlJournalStart
|
||||
rlPhaseStartSetup
|
||||
rlAssertRpm $PACKAGE
|
||||
rlAssertRpm grep
|
||||
rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory"
|
||||
rlRun "pushd $TmpDir"
|
||||
rlPhaseEnd
|
||||
|
||||
|
||||
rlPhaseStartTest "Sanity"
|
||||
rlRun "echo 'aVk(|vDTRz$xVE-W6(Z2' | LANG=C cracklib-check | grep ': OK'" 0 "Check if cracklib-check accepts complex passwords"
|
||||
rlRun "echo AAAAAAAAAAAA | LANG=C cracklib-check | grep ': OK'" 1 "Verify that cracklib-check rejects simple passwords"
|
||||
rlRun "echo AAAAAAAAAAAA | LANG=C cracklib-check | grep 'DIFFERENT'" 0 "Verify that rejection message contains string 'DIFFERENT'"
|
||||
rlPhaseEnd
|
||||
|
||||
NAME[0]="Assamese"
|
||||
CODE[0]="as_IN.utf8"
|
||||
|
||||
NAME[1]="Bengali"
|
||||
CODE[1]="bn_IN.utf8"
|
||||
|
||||
NAME[2]="German"
|
||||
CODE[2]="de_DE.utf8"
|
||||
|
||||
NAME[3]="Spanish"
|
||||
CODE[3]="es_ES.utf8"
|
||||
|
||||
NAME[4]="French"
|
||||
CODE[4]="fr_FR.utf8"
|
||||
|
||||
NAME[5]="Gujarati"
|
||||
CODE[5]="gu_IN.utf8"
|
||||
|
||||
NAME[6]="Hindi"
|
||||
CODE[6]="hi_IN.utf8"
|
||||
|
||||
NAME[7]="Italian"
|
||||
CODE[7]="it_IT.utf8"
|
||||
|
||||
NAME[8]="Japanese"
|
||||
CODE[8]="ja_JP.utf8"
|
||||
|
||||
NAME[9]="Kannada"
|
||||
CODE[9]="kn_IN.utf8"
|
||||
|
||||
NAME[10]="Korean"
|
||||
CODE[10]="ko_KR.utf8"
|
||||
|
||||
NAME[11]="Malayalam"
|
||||
CODE[11]="ml_IN.utf8"
|
||||
|
||||
NAME[12]="Marathi"
|
||||
CODE[12]="mr_IN.utf8"
|
||||
|
||||
NAME[13]="Oriya"
|
||||
CODE[13]="or_IN.utf8"
|
||||
|
||||
NAME[14]="Punjabi"
|
||||
CODE[14]="pa_IN.utf8"
|
||||
|
||||
NAME[15]="Brazil Portugese"
|
||||
CODE[15]="pt_BR.utf8"
|
||||
|
||||
NAME[16]="Russian"
|
||||
CODE[16]="ru_RU.utf8"
|
||||
|
||||
NAME[17]="Tamil"
|
||||
CODE[17]="ta_IN.utf8"
|
||||
|
||||
NAME[18]="Telugu"
|
||||
CODE[18]="te_IN.utf8"
|
||||
|
||||
NAME[19]="Chinese"
|
||||
CODE[19]="zh_CN.utf8"
|
||||
|
||||
NAME[20]="Taiwanese Chinese"
|
||||
CODE[20]="zh_TW.utf8"
|
||||
|
||||
for i in ${!NAME[@]}; do
|
||||
rlPhaseStartTest "${NAME[$i]}"
|
||||
rlRun "echo AAAAAAAAAAAA | LANG=${CODE[$i]} cracklib-check | grep -Ev DIFFERENT\>" 0 "Check if fallback message isn't used"
|
||||
rlRun "echo AAAAAAAAAAAA | LANG=${CODE[$i]} cracklib-check | grep '???????'" 1 "Check if message isn't clobbered"
|
||||
rlPhaseEnd
|
||||
done
|
||||
|
||||
rlPhaseStartCleanup
|
||||
rlRun "popd"
|
||||
rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
|
||||
rlPhaseEnd
|
||||
rlJournalPrintText
|
||||
rlJournalEnd
|
||||
3
tests/inventory
Executable file
3
tests/inventory
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/bash
|
||||
export TEST_DOCKER_EXTRA_ARGS="--security-opt seccomp:unconfined"
|
||||
exec merge-standard-inventory "$@"
|
||||
25
tests/tests.yml
Normal file
25
tests/tests.yml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
---
|
||||
# Tests for Docker and Classic Context
|
||||
- hosts: localhost
|
||||
roles:
|
||||
- role: standard-test-beakerlib
|
||||
tags:
|
||||
- classic
|
||||
- container
|
||||
tests:
|
||||
- ABI-compatibility
|
||||
- Localization
|
||||
required_packages:
|
||||
- words # required for ABI-compatibility
|
||||
- cracklib-devel # required for ABI-compatibility
|
||||
- ltrace # required for ABI-compatibility
|
||||
- gcc # required for ABI-compatibility
|
||||
|
||||
# Tests for Atomic
|
||||
- hosts: localhost
|
||||
roles:
|
||||
- role: standard-test-beakerlib
|
||||
tags:
|
||||
- atomic
|
||||
tests:
|
||||
- Localization
|
||||
Loading…
Add table
Add a link
Reference in a new issue