commit dd6c3a91dbda65ca0970d6d6475dad76bcc7bdb7 Author: CentOS Sources Date: Tue May 7 02:48:42 2019 -0400 import cracklib-2.9.6-15.el8 diff --git a/.cracklib.metadata b/.cracklib.metadata new file mode 100644 index 0000000..ebd8fc3 --- /dev/null +++ b/.cracklib.metadata @@ -0,0 +1,5 @@ +9199e7b8830717565a844430653f5a90a04fcd65 SOURCES/cracklib-2.9.6.tar.gz +b0739c990431a0971545dff347b50f922604c1cd SOURCES/cracklib-words-2.9.6.gz +b3b701e951362b23c8abb948936e8534d0c9b9a2 SOURCES/cracklib2_2.8.19-1.debian.tar.gz +d5941a3aa514245922433978a7d07c749d76d000 SOURCES/cracklib2_2.8.19-1.dsc +9b407fa41faaf4138e875f168158e5f4568ea33e SOURCES/missing-words.gz diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6022bcd --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +SOURCES/cracklib-2.9.6.tar.gz +SOURCES/cracklib-words-2.9.6.gz +SOURCES/cracklib2_2.8.19-1.debian.tar.gz +SOURCES/cracklib2_2.8.19-1.dsc +SOURCES/missing-words.gz diff --git a/SOURCES/cracklib-2.9.0-python-gzdicts.patch b/SOURCES/cracklib-2.9.0-python-gzdicts.patch new file mode 100644 index 0000000..feac201 --- /dev/null +++ b/SOURCES/cracklib-2.9.0-python-gzdicts.patch @@ -0,0 +1,104 @@ +diff -up cracklib-2.9.0/python/_cracklib.c.gzdicts cracklib-2.9.0/python/_cracklib.c +--- cracklib-2.9.0/python/_cracklib.c.gzdicts 2013-06-01 16:47:13.000000000 +0200 ++++ cracklib-2.9.0/python/_cracklib.c 2013-08-20 12:37:32.028611493 +0200 +@@ -23,6 +23,7 @@ + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + ++#include "config.h" + #ifdef PYTHON_H + #include PYTHON_H + #else +@@ -72,9 +73,8 @@ static char _cracklib_FascistCheck_doc [ + static PyObject * + _cracklib_FascistCheck(PyObject *self, PyObject *args, PyObject *kwargs) + { +- char *candidate, *dict; +- char *defaultdict = NULL; +- const char *result; ++ char *candidate; ++ const char *result, *dict; + struct stat st; + char *keywords[] = {"pw", "dictpath", NULL}; + char *dictfile; +@@ -103,44 +103,35 @@ _cracklib_FascistCheck(PyObject *self, P + "second argument was not an absolute path!"); + return NULL; + } +- dictfile = malloc(strlen(dict) + sizeof(DICT_SUFFIX)); +- if (dictfile == NULL) +- { +- PyErr_SetFromErrnoWithFilename(PyExc_OSError, dict); +- return NULL; +- } +- sprintf(dictfile, "%s" DICT_SUFFIX, dict); +- if (lstat(dictfile, &st) == -1) +- { +- PyErr_SetFromErrnoWithFilename(PyExc_OSError, dictfile); +- free(dictfile); +- return NULL; +- } +- free(dictfile); + } else + { +- defaultdict = strdup(GetDefaultCracklibDict()); +- if (errno == ENOMEM) { +- PyErr_SetFromErrno(PyExc_OSError); +- return NULL; +- } +- dictfile = malloc(strlen(defaultdict) + sizeof(DICT_SUFFIX)); +- if (dictfile == NULL) +- { +- PyErr_SetFromErrnoWithFilename(PyExc_OSError, defaultdict); +- free(defaultdict); +- return NULL; +- } +- sprintf(dictfile, "%s" DICT_SUFFIX, defaultdict); ++ /* No need to strdup() anything as this is a constant value */ ++ dict = GetDefaultCracklibDict(); ++ } ++ ++ dictfile = malloc(strlen(dict) + sizeof(DICT_SUFFIX) + 3); ++ if (dictfile == NULL) ++ { ++ PyErr_SetFromErrnoWithFilename(PyExc_OSError, dict); ++ return NULL; ++ } ++ sprintf(dictfile, "%s" DICT_SUFFIX, dict); ++ if (lstat(dictfile, &st) == -1) ++ { ++#ifdef HAVE_ZLIB_H ++ sprintf(dictfile, "%s" DICT_SUFFIX ".gz", dict); + if (lstat(dictfile, &st) == -1) + { ++ sprintf(dictfile, "%s" DICT_SUFFIX, dict); ++#endif + PyErr_SetFromErrnoWithFilename(PyExc_OSError, dictfile); +- free(defaultdict); + free(dictfile); + return NULL; ++#ifdef HAVE_ZLIB_H + } +- free(dictfile); ++#endif + } ++ free(dictfile); + + setlocale(LC_ALL, ""); + #ifdef ENABLE_NLS +@@ -148,14 +139,9 @@ _cracklib_FascistCheck(PyObject *self, P + #endif + + LOCK(); +- result = FascistCheck(candidate, dict ? dict : defaultdict); ++ result = FascistCheck(candidate, dict); + UNLOCK(); + +- if (defaultdict != NULL) +- { +- free(defaultdict); +- } +- + if (result != NULL) + { + PyErr_SetString(PyExc_ValueError, result); diff --git a/SOURCES/cracklib-2.9.1-inttypes.patch b/SOURCES/cracklib-2.9.1-inttypes.patch new file mode 100644 index 0000000..c8d8fe8 --- /dev/null +++ b/SOURCES/cracklib-2.9.1-inttypes.patch @@ -0,0 +1,22 @@ +Do not depend on config.h in public header. +diff -up cracklib-2.9.1/lib/packer.h.inttypes cracklib-2.9.1/lib/packer.h +--- cracklib-2.9.1/lib/packer.h.inttypes 2013-12-03 15:00:15.000000000 +0100 ++++ cracklib-2.9.1/lib/packer.h 2013-12-09 09:07:38.306394809 +0100 +@@ -30,17 +30,7 @@ + #define _(String) (String) + #endif + +-#if defined(HAVE_INTTYPES_H) +-#include +-#else +-#if defined(HAVE_STDINT_H) + #include +-#else +-typedef unsigned int uint32_t; +-typedef unsigned short uint16_t; +-#endif +-#endif +- + + struct pi_header + { diff --git a/SOURCES/cracklib-2.9.6-cve-2016-6318.patch b/SOURCES/cracklib-2.9.6-cve-2016-6318.patch new file mode 100644 index 0000000..370b403 --- /dev/null +++ b/SOURCES/cracklib-2.9.6-cve-2016-6318.patch @@ -0,0 +1,144 @@ +diff -up cracklib-2.9.6/lib/fascist.c.overflow cracklib-2.9.6/lib/fascist.c +--- cracklib-2.9.6/lib/fascist.c.overflow 2015-10-23 16:58:38.403319225 +0200 ++++ cracklib-2.9.6/lib/fascist.c 2016-12-08 17:28:41.490101358 +0100 +@@ -515,7 +515,7 @@ FascistGecosUser(char *password, const c + char gbuffer[STRINGSIZE]; + char tbuffer[STRINGSIZE]; + char *uwords[STRINGSIZE]; +- char longbuffer[STRINGSIZE * 2]; ++ char longbuffer[STRINGSIZE]; + + if (gecos == NULL) + gecos = ""; +@@ -596,38 +596,47 @@ FascistGecosUser(char *password, const c + { + for (i = 0; i < j; i++) + { +- strcpy(longbuffer, uwords[i]); +- strcat(longbuffer, uwords[j]); +- +- if (GTry(longbuffer, password)) ++ if (strlen(uwords[i]) + strlen(uwords[j]) < STRINGSIZE) + { +- return _("it is derived from your password entry"); +- } +- +- strcpy(longbuffer, uwords[j]); +- strcat(longbuffer, uwords[i]); ++ strcpy(longbuffer, uwords[i]); ++ strcat(longbuffer, uwords[j]); + +- if (GTry(longbuffer, password)) +- { +- return _("it's derived from your password entry"); ++ if (GTry(longbuffer, password)) ++ { ++ return _("it is derived from your password entry"); ++ } ++ ++ strcpy(longbuffer, uwords[j]); ++ strcat(longbuffer, uwords[i]); ++ ++ if (GTry(longbuffer, password)) ++ { ++ return _("it's derived from your password entry"); ++ } + } + +- longbuffer[0] = uwords[i][0]; +- longbuffer[1] = '\0'; +- strcat(longbuffer, uwords[j]); +- +- if (GTry(longbuffer, password)) ++ if (strlen(uwords[j]) < STRINGSIZE - 1) + { +- return _("it is derivable from your password entry"); ++ longbuffer[0] = uwords[i][0]; ++ longbuffer[1] = '\0'; ++ strcat(longbuffer, uwords[j]); ++ ++ if (GTry(longbuffer, password)) ++ { ++ return _("it is derivable from your password entry"); ++ } + } + +- longbuffer[0] = uwords[j][0]; +- longbuffer[1] = '\0'; +- strcat(longbuffer, uwords[i]); +- +- if (GTry(longbuffer, password)) ++ if (strlen(uwords[i]) < STRINGSIZE - 1) + { +- return _("it's derivable from your password entry"); ++ longbuffer[0] = uwords[j][0]; ++ longbuffer[1] = '\0'; ++ strcat(longbuffer, uwords[i]); ++ ++ if (GTry(longbuffer, password)) ++ { ++ return _("it's derivable from your password entry"); ++ } + } + } + } +diff -up cracklib-2.9.6/lib/rules.c.overflow cracklib-2.9.6/lib/rules.c +--- cracklib-2.9.6/lib/rules.c.overflow 2015-10-23 16:58:38.000000000 +0200 ++++ cracklib-2.9.6/lib/rules.c 2016-12-08 18:03:27.041941297 +0100 +@@ -158,6 +158,8 @@ Pluralise(string, area) /* returns a po + register int length; + length = strlen(string); + strcpy(area, string); ++ if (length > STRINGSIZE - 3) /* we add 2 characters at worst */ ++ return (area); + + if (!Suffix(string, "ch") || + !Suffix(string, "ex") || +@@ -462,11 +464,11 @@ Mangle(input, control, area) /* returns + Pluralise(area2, area); + break; + case RULE_REFLECT: +- strcat(area, Reverse(area, area2)); ++ strncat(area, Reverse(area, area2), STRINGSIZE - strlen(area) - 1); + break; + case RULE_DUPLICATE: + strcpy(area2, area); +- strcat(area, area2); ++ strncat(area, area2, STRINGSIZE - strlen(area) - 1); + break; + case RULE_GT: + if (!ptr[1]) +@@ -514,7 +516,8 @@ Mangle(input, control, area) /* returns + } else + { + area2[0] = *(++ptr); +- strcpy(area2 + 1, area); ++ strncpy(area2 + 1, area, STRINGSIZE - 2); ++ area2[STRINGSIZE - 1] = '\0'; + strcpy(area, area2); + } + break; +@@ -528,8 +531,10 @@ Mangle(input, control, area) /* returns + register char *string; + string = area; + while (*(string++)); +- string[-1] = *(++ptr); +- *string = '\0'; ++ if (string < area + STRINGSIZE) { ++ string[-1] = *(++ptr); ++ *string = '\0'; ++ } + } + break; + case RULE_EXTRACT: +@@ -600,6 +605,10 @@ Mangle(input, control, area) /* returns + } + p1 = area; + p2 = area2; ++ if (strlen(p1) > STRINGSIZE - 2) { ++ /* truncate */ ++ p1[STRINGSIZE - 2] = '\0'; ++ } + while (i && *p1) + { + i--; diff --git a/SOURCES/cracklib-2.9.6-lookup.patch b/SOURCES/cracklib-2.9.6-lookup.patch new file mode 100644 index 0000000..52ce857 --- /dev/null +++ b/SOURCES/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/SOURCES/cracklib-2.9.6-packlib-reentrant.patch b/SOURCES/cracklib-2.9.6-packlib-reentrant.patch new file mode 100644 index 0000000..9ca7fa7 --- /dev/null +++ b/SOURCES/cracklib-2.9.6-packlib-reentrant.patch @@ -0,0 +1,672 @@ +diff -up cracklib-2.9.6/lib/fascist.c.reentrant cracklib-2.9.6/lib/fascist.c +--- cracklib-2.9.6/lib/fascist.c.reentrant 2015-08-18 20:41:16.000000000 +0200 ++++ cracklib-2.9.6/lib/fascist.c 2015-10-22 18:17:20.338290974 +0200 +@@ -36,8 +36,8 @@ typedef unsigned short uint16_t; + #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 @@ GTry(rawtext, password) + 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 @@ GTry(rawtext, password) + + 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 @@ GTry(rawtext, password) + } + + #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 @@ GTry(rawtext, password) + + 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 @@ FascistGecosUser(char *password, const c + + strncpy(tbuffer, gecos, STRINGSIZE); + tbuffer[STRINGSIZE-1] = '\0'; +- strcpy(gbuffer, Lowercase(tbuffer)); ++ Lowercase(tbuffer, gbuffer); + + wc = 0; + ptr = gbuffer; +@@ -695,6 +697,7 @@ FascistLookUser(PWDICT *pwp, char *instr + char junk[STRINGSIZE]; + char *password; + char rpassword[STRINGSIZE]; ++ char area[STRINGSIZE]; + uint32_t notfound; + + notfound = PW_WORDS(pwp); +@@ -731,7 +734,7 @@ FascistLookUser(PWDICT *pwp, char *instr + return _("it does not contain enough DIFFERENT characters"); + } + +- strcpy(password, (char *)Lowercase(password)); ++ strcpy(password, (char *)Lowercase(password, area)); + + Trim(password); + +@@ -787,7 +790,7 @@ FascistLookUser(PWDICT *pwp, char *instr + { + char *a; + +- if (!(a = Mangle(password, r_destructors[i]))) ++ if (!(a = Mangle(password, r_destructors[i], area))) + { + continue; + } +@@ -802,13 +805,13 @@ FascistLookUser(PWDICT *pwp, char *instr + } + } + +- 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 -up cracklib-2.9.6/lib/packer.h.reentrant cracklib-2.9.6/lib/packer.h +--- cracklib-2.9.6/lib/packer.h.reentrant 2015-10-22 18:17:20.335290902 +0200 ++++ cracklib-2.9.6/lib/packer.h 2015-10-22 18:17:20.338290974 +0200 +@@ -82,7 +82,7 @@ extern int PWClose(PWDICT *pwp); + 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 -up cracklib-2.9.6/lib/packlib.c.reentrant cracklib-2.9.6/lib/packlib.c +--- cracklib-2.9.6/lib/packlib.c.reentrant 2015-08-18 20:41:16.000000000 +0200 ++++ cracklib-2.9.6/lib/packlib.c 2015-10-22 18:19:52.154911451 +0200 +@@ -67,8 +67,8 @@ PWOpen(prefix, mode) + char *mode; + { + int use64 = 0; +- static PWDICT pdesc; +- static PWDICT64 pdesc64; ++ PWDICT *pdesc; ++ PWDICT64 pdesc64; + char iname[STRINGSIZE]; + char dname[STRINGSIZE]; + char wname[STRINGSIZE]; +@@ -76,13 +76,11 @@ PWOpen(prefix, mode) + 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); +@@ -91,77 +89,80 @@ PWOpen(prefix, mode) + + 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 +@@ -170,10 +171,11 @@ PWOpen(prefix, mode) + { + 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); +@@ -181,10 +183,9 @@ PWOpen(prefix, mode) + { + 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 +@@ -193,6 +194,7 @@ PWOpen(prefix, mode) + { + fclose(wfp); + } ++ free(pdesc); + return NULL; + } + if (pdesc64.header.pih_magic != PIH_MAGIC) +@@ -200,10 +202,9 @@ PWOpen(prefix, mode) + /* 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 +@@ -213,23 +214,23 @@ PWOpen(prefix, mode) + { + 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 +@@ -239,17 +240,17 @@ PWOpen(prefix, mode) + { + 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 +@@ -258,17 +259,17 @@ PWOpen(prefix, mode) + { + 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 +@@ -277,10 +278,11 @@ PWOpen(prefix, mode) + { + fclose(wfp); + } ++ free(pdesc); + return NULL; + } + +- if (pdesc.flags & PFOR_USEHWMS) ++ if (pdesc->flags & PFOR_USEHWMS) + { + int i; + +@@ -288,27 +290,27 @@ PWOpen(prefix, mode) + { + 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 +@@ -318,6 +320,7 @@ PWClose(pwp) + if (pwp->header.pih_magic != PIH_MAGIC) + { + fprintf(stderr, "PWClose: close magic mismatch\n"); ++ /* we do not try to free memory that is probably corrupted */ + return (-1); + } + +@@ -329,12 +332,14 @@ PWClose(pwp) + 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); + } + +@@ -368,6 +373,7 @@ PWClose(pwp) + } + + pwp->header.pih_magic = 0; ++ free(pwp); + + return (0); + } +diff -up cracklib-2.9.6/lib/rules.c.reentrant cracklib-2.9.6/lib/rules.c +--- cracklib-2.9.6/lib/rules.c.reentrant 2015-08-18 20:41:16.000000000 +0200 ++++ cracklib-2.9.6/lib/rules.c 2015-10-22 18:17:20.339290998 +0200 +@@ -82,12 +82,12 @@ Suffix(myword, suffix) + } + + char * +-Reverse(str) /* return a pointer to a reversal */ ++Reverse(str, area) /* return a pointer to a reversal */ + register char *str; ++ char *area; + { + register int i; + register int j; +- static char area[STRINGSIZE]; + j = i = strlen(str); + while (*str) + { +@@ -98,11 +98,11 @@ Reverse(str) /* return a pointer to a + } + + char * +-Uppercase(str) /* return a pointer to an uppercase */ ++Uppercase(str, area) /* return a pointer to an uppercase */ + register char *str; ++ char *area; + { + register char *ptr; +- static char area[STRINGSIZE]; + ptr = area; + while (*str) + { +@@ -115,11 +115,11 @@ Uppercase(str) /* return a pointer to + } + + char * +-Lowercase(str) /* return a pointer to an lowercase */ ++Lowercase(str, area) /* return a pointer to an lowercase */ + register char *str; ++ char *area; + { + register char *ptr; +- static char area[STRINGSIZE]; + ptr = area; + while (*str) + { +@@ -132,11 +132,11 @@ Lowercase(str) /* return a pointer to + } + + char * +-Capitalise(str) /* return a pointer to an capitalised */ ++Capitalise(str, area) /* return a pointer to an capitalised */ + register char *str; ++ char *area; + { + register char *ptr; +- static char area[STRINGSIZE]; + ptr = area; + + while (*str) +@@ -151,11 +151,11 @@ Capitalise(str) /* return a pointer to + } + + char * +-Pluralise(string) /* returns a pointer to a plural */ ++Pluralise(string, area) /* returns a pointer to a plural */ + register char *string; ++ char *area; + { + register int length; +- static char area[STRINGSIZE]; + length = strlen(string); + strcpy(area, string); + +@@ -192,13 +192,13 @@ Pluralise(string) /* returns a pointer + } + + char * +-Substitute(string, old, new) /* returns pointer to a swapped about copy */ ++Substitute(string, old, new, area) /* returns pointer to a swapped about copy */ + register char *string; + register char old; + register char new; ++ char *area; + { + register char *ptr; +- static char area[STRINGSIZE]; + ptr = area; + while (*string) + { +@@ -210,12 +210,12 @@ Substitute(string, old, new) /* returns + } + + char * +-Purge(string, target) /* returns pointer to a purged copy */ ++Purge(string, target, area) /* returns pointer to a purged copy */ + register char *string; + register char target; ++ char *area; + { + register char *ptr; +- static char area[STRINGSIZE]; + ptr = area; + while (*string) + { +@@ -372,13 +372,13 @@ PolyStrchr(string, class) + } + + char * +-PolySubst(string, class, new) /* returns pointer to a swapped about copy */ ++PolySubst(string, class, new, area) /* returns pointer to a swapped about copy */ + register char *string; + register char class; + register char new; ++ char *area; + { + register char *ptr; +- static char area[STRINGSIZE]; + ptr = area; + while (*string) + { +@@ -390,12 +390,12 @@ PolySubst(string, class, new) /* returns + } + + char * +-PolyPurge(string, class) /* returns pointer to a purged copy */ ++PolyPurge(string, class, area) /* returns pointer to a purged copy */ + register char *string; + register char class; ++ char *area; + { + register char *ptr; +- static char area[STRINGSIZE]; + ptr = area; + while (*string) + { +@@ -428,40 +428,41 @@ Char2Int(character) + } + + 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; + register char *ptr; +- static char area[STRINGSIZE]; + char area2[STRINGSIZE]; + area[0] = '\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); +@@ -548,7 +549,6 @@ Mangle(input, control) /* returns a poi + 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]; +@@ -619,10 +619,10 @@ Mangle(input, control) /* returns a poi + 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; +@@ -633,11 +633,11 @@ Mangle(input, control) /* returns a poi + 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; diff --git a/SOURCES/cracklib-2.9.6-simplistic.patch b/SOURCES/cracklib-2.9.6-simplistic.patch new file mode 100644 index 0000000..743b9cb --- /dev/null +++ b/SOURCES/cracklib-2.9.6-simplistic.patch @@ -0,0 +1,112 @@ +diff -up cracklib-2.9.6/lib/fascist.c.simplistic cracklib-2.9.6/lib/fascist.c +--- cracklib-2.9.6/lib/fascist.c.simplistic 2015-10-22 18:21:51.099748012 +0200 ++++ cracklib-2.9.6/lib/fascist.c 2015-10-22 18:21:51.101748060 +0200 +@@ -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 */ + +@@ -454,6 +453,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 +@@ -480,6 +485,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 +@@ -699,6 +710,7 @@ FascistLookUser(PWDICT *pwp, char *instr + char rpassword[STRINGSIZE]; + char area[STRINGSIZE]; + uint32_t notfound; ++ int len; + + notfound = PW_WORDS(pwp); + /* already truncated if from FascistCheck() */ +@@ -748,6 +760,7 @@ FascistLookUser(PWDICT *pwp, char *instr + return _("it is all whitespace"); + } + ++ len = strlen(password); + i = 0; + ptr = password; + while (ptr[0] && ptr[1]) +@@ -759,10 +772,9 @@ FascistLookUser(PWDICT *pwp, char *instr + 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"); + } +@@ -795,6 +807,12 @@ FascistLookUser(PWDICT *pwp, char *instr + continue; + } + ++ if (len - strlen(a) >= 3) ++ { ++ /* purged too much */ ++ continue; ++ } ++ + #ifdef DEBUG + printf("%-16s (dict)\n", a); + #endif +@@ -815,6 +833,13 @@ FascistLookUser(PWDICT *pwp, char *instr + { + continue; + } ++ ++ if (len - strlen(a) >= 3) ++ { ++ /* purged too much */ ++ continue; ++ } ++ + #ifdef DEBUG + printf("%-16s (reversed dict)\n", a); + #endif +diff -up cracklib-2.9.6/util/cracklib-format.simplistic cracklib-2.9.6/util/cracklib-format +--- cracklib-2.9.6/util/cracklib-format.simplistic 2015-10-22 18:21:51.101748060 +0200 ++++ cracklib-2.9.6/util/cracklib-format 2014-07-09 17:24:45.000000000 +0200 +@@ -3,8 +3,10 @@ + # This preprocesses a set of word lists into a suitable form for input + # into cracklib-packer + # ++LC_ALL=C ++export LC_ALL + gzip -cdf "$@" | +- grep -v '^\(#\|$\)' | +- tr '[A-Z]' '[a-z]' | +- tr -cd '\012[a-z][0-9]' | +- env LC_ALL=C sort -u ++ grep -a -E -v '^.{32,}$' | ++ tr '[:upper:]' '[:lower:]' | ++ tr -cd '\n[:graph:]' | ++ sort -u diff --git a/SOURCES/cracklib-2.9.6-translation-updates.patch b/SOURCES/cracklib-2.9.6-translation-updates.patch new file mode 100644 index 0000000..fff80c0 --- /dev/null +++ b/SOURCES/cracklib-2.9.6-translation-updates.patch @@ -0,0 +1,3084 @@ +diff -urN cracklib-2.9.6.old/po/as.po cracklib-2.9.6.new/po/as.po +--- cracklib-2.9.6.old/po/as.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/as.po 2018-10-09 11:57:33.759928725 +0200 +@@ -1,82 +1,83 @@ + # Copyright (C) 2009 Free Software Foundation, Inc. + # This file is distributed under the same license as the PACKAGE package. +-# ++# + # Amitakhya Phukan , 2009. ++# ngoswami , 2013. #zanata + msgid "" + msgstr "" + "Project-Id-Version: \n" +-"Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" +-"POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2009-11-12 11:39+0530\n" +-"Last-Translator: Amitakhya Phukan \n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2012-12-14 16:11-0600\n" ++"PO-Revision-Date: 2013-09-23 10:11-0400\n" ++"Last-Translator: ngoswami \n" + "Language-Team: Assamese <>\n" +-"Language: as\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: Lokalize 1.0\n" ++"Language: as\n" + "Plural-Forms: nplurals=2; plural=n != 1;\n" ++"X-Generator: Zanata 3.1.2\n" ++ ++#: ../lib/fascist.c:550 ++msgid "you are not registered in the password file" ++msgstr "আপুনি গুপ্তশব্দৰ নথিপত্ৰ পঞ্জিকৃত নহয়" + +-#: lib/fascist.c:516 ++#: ../lib/fascist.c:564 + msgid "it is based on your username" + msgstr "এইটো আপোনাৰ ব্যৱহাৰকৰ্তাৰ নামৰ আধাৰত" + +-#: lib/fascist.c:576 ++#: ../lib/fascist.c:629 + msgid "it is based upon your password entry" + msgstr "এইটো আপোনাৰ গুপ্তশব্দৰ নিবেশৰ আধাৰত" + +-#: lib/fascist.c:591 ++#: ../lib/fascist.c:649 + msgid "it is derived from your password entry" + msgstr "ইয়াক আপোনাৰ গুপ্তশব্দৰ নিবেশৰ পৰা পোৱা হৈছে" + +-#: lib/fascist.c:599 ++#: ../lib/fascist.c:662 + msgid "it's derived from your password entry" + msgstr "ইয়াক আপোনাৰ গুপ্তশব্দৰ নিবেশৰ পৰা পোৱা হৈছে" + +-#: lib/fascist.c:608 ++#: ../lib/fascist.c:676 + msgid "it is derivable from your password entry" + msgstr "ইয়াক আপোনাৰ গুপ্তশব্দৰ নিবেশৰ পৰা পাব পাৰি" + +-#: lib/fascist.c:617 ++#: ../lib/fascist.c:690 + msgid "it's derivable from your password entry" + msgstr "ইয়াক আপোনাৰ গুপ্তশব্দৰ নিবেশৰ পৰা পাব পাৰি" + +-#: lib/fascist.c:674 +-msgid "you are not registered in the password file" +-msgstr "আপুনি গুপ্তশব্দৰ নথিপত্ৰ পঞ্জিকৃত নহয়" +- +-#: lib/fascist.c:709 ++#: ../lib/fascist.c:726 + msgid "it is WAY too short" + msgstr "ই বৰ সৰু" + +-#: lib/fascist.c:714 ++#: ../lib/fascist.c:731 + msgid "it is too short" + msgstr "ই বৰ সৰু" + +-#: lib/fascist.c:731 ++#: ../lib/fascist.c:748 + msgid "it does not contain enough DIFFERENT characters" + msgstr "ইয়াত যথেষ্ট ভিন্ন আকৰ নাই" + +-#: lib/fascist.c:745 ++#: ../lib/fascist.c:762 + msgid "it is all whitespace" + msgstr "ই সম্পূৰ্ণৰূপে ৰিক্ত স্থানেৰে ভৰা" + +-#: lib/fascist.c:764 ++#: ../lib/fascist.c:781 + msgid "it is too simplistic/systematic" + msgstr "ই বৰ সৰল/শৃংখলাবদ্ধ" + +-#: lib/fascist.c:769 ++#: ../lib/fascist.c:786 + msgid "it looks like a National Insurance number." + msgstr "ই দেখাত এটা National Insurance ৰ নম্বৰৰ দৰে ।" + +-#: lib/fascist.c:801 ++#: ../lib/fascist.c:813 + msgid "it is based on a dictionary word" + msgstr "ই এটা অভিধানৰ শব্দৰ আধাৰত" + +-#: lib/fascist.c:820 ++#: ../lib/fascist.c:832 + msgid "it is based on a (reversed) dictionary word" + msgstr "ই এটা অভিধানৰ শব্দৰ আধাৰত (ওলোটা ক্ৰমত)" + +-#: lib/fascist.c:865 ++#: ../lib/fascist.c:867 + msgid "error loading dictionary" +-msgstr "" ++msgstr "শব্দকোষ ল'ড কৰোতে ত্ৰুটি" +diff -urN cracklib-2.9.6.old/po/be.po cracklib-2.9.6.new/po/be.po +--- cracklib-2.9.6.old/po/be.po 1970-01-01 01:00:00.000000000 +0100 ++++ cracklib-2.9.6.new/po/be.po 2018-10-09 11:38:57.597040577 +0200 +@@ -0,0 +1,79 @@ ++# Viktar Siarheichyk , 2018. #zanata ++msgid "" ++msgstr "" ++"Project-Id-Version: cracklib 2.9.6\n" ++"Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" ++"POT-Creation-Date: 2015-08-18 13:45-0500\n" ++"PO-Revision-Date: 2018-06-04 07:22+0000\n" ++"Last-Translator: Viktar Siarheichyk \n" ++"Language-Team: Belarusian\n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++"Language: be\n" ++"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" ++"X-Generator: Zanata 4.6.2\n" ++ ++#: lib/fascist.c:516 ++msgid "it is based on your username" ++msgstr "заснавана на імені карыстальніка" ++ ++#: lib/fascist.c:576 ++msgid "it is based upon your password entry" ++msgstr "заснавана на ўпісаным пароле" ++ ++#: lib/fascist.c:591 ++msgid "it is derived from your password entry" ++msgstr "паходзіць з вашага запісу пароля" ++ ++#: lib/fascist.c:599 ++msgid "it's derived from your password entry" ++msgstr "паходзіць з вашага запісу пароля" ++ ++#: lib/fascist.c:608 ++msgid "it is derivable from your password entry" ++msgstr "можа паходзіць з вашага запісу пароля" ++ ++#: lib/fascist.c:617 ++msgid "it's derivable from your password entry" ++msgstr "можа паходзіць з вашага запісу пароля" ++ ++#: lib/fascist.c:674 ++msgid "you are not registered in the password file" ++msgstr "няма вашага запісу ў файле пароляў" ++ ++#: lib/fascist.c:709 ++msgid "it is WAY too short" ++msgstr "ён ЗАНАДТА кароткі" ++ ++#: lib/fascist.c:714 ++msgid "it is too short" ++msgstr "ён надта кароткі" ++ ++#: lib/fascist.c:731 ++msgid "it does not contain enough DIFFERENT characters" ++msgstr "у ім недастаткова РОЗНАСТАЙНЫХ знакаў" ++ ++#: lib/fascist.c:745 ++msgid "it is all whitespace" ++msgstr "адны прабелы" ++ ++#: lib/fascist.c:764 ++msgid "it is too simplistic/systematic" ++msgstr "надта просты ці распаўсюджаны" ++ ++#: lib/fascist.c:769 ++msgid "it looks like a National Insurance number." ++msgstr " надобны на нумар сацыяльнага страхавання." ++ ++#: lib/fascist.c:801 ++msgid "it is based on a dictionary word" ++msgstr "базуецца на слоўнікавым слове" ++ ++#: lib/fascist.c:820 ++msgid "it is based on a (reversed) dictionary word" ++msgstr "бвзуецца на (адваротным) слоўнікавым слове" ++ ++#: lib/fascist.c:865 ++msgid "error loading dictionary" ++msgstr "памылка падчас загрузкі слоўніка" +diff -urN cracklib-2.9.6.old/po/bn_IN.po cracklib-2.9.6.new/po/bn_IN.po +--- cracklib-2.9.6.old/po/bn_IN.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/bn_IN.po 2018-10-09 11:57:33.759928725 +0200 +@@ -1,83 +1,84 @@ + # translation of cracklib.po to Bengali INDIA + # Copyright (C) 2009 Free Software Foundation, Inc. + # This file is distributed under the same license as the cracklib package. +-# ++# + # Runa Bhattacharjee , 2009. ++# sray , 2013. #zanata + msgid "" + msgstr "" + "Project-Id-Version: cracklib.default.cracklib\n" +-"Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" +-"POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2009-11-11 12:34+0530\n" +-"Last-Translator: Runa Bhattacharjee \n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2012-12-14 16:11-0600\n" ++"PO-Revision-Date: 2013-10-03 05:14-0400\n" ++"Last-Translator: sray \n" + "Language-Team: Bengali INDIA \n" +-"Language: \n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: KBabel 1.11.4\n" ++"Language: bn-IN\n" + "Plural-Forms: nplurals=2; plural=(n != 1);\n" ++"X-Generator: Zanata 3.1.2\n" + +-#: lib/fascist.c:516 ++#: ../lib/fascist.c:550 ++msgid "you are not registered in the password file" ++msgstr "পাসওয়ার্ড ফাইলের মধ্যে আপনার পরিচয় নিবন্ধিত নয়" ++ ++#: ../lib/fascist.c:564 + msgid "it is based on your username" + msgstr "আপনার ব্যবহারকারীর নামের উপর এটি নির্ভরশীল" + +-#: lib/fascist.c:576 ++#: ../lib/fascist.c:629 + msgid "it is based upon your password entry" + msgstr "আপনার পাসওয়ার্ড এনট্রির উপর এটি নির্ভরশীল" + +-#: lib/fascist.c:591 ++#: ../lib/fascist.c:649 + msgid "it is derived from your password entry" + msgstr "আপনার পাসওয়ার্ড এনট্রি থেকে এটি আহরণ করা হয়েছে" + +-#: lib/fascist.c:599 ++#: ../lib/fascist.c:662 + msgid "it's derived from your password entry" + msgstr "আপনার পাসওয়ার্ড এনট্রি থেকে এটি আহরণ করা হয়েছে" + +-#: lib/fascist.c:608 ++#: ../lib/fascist.c:676 + msgid "it is derivable from your password entry" + msgstr "আপনার পাসওয়ার্ড এনট্রি থেকে এটি আহরণ করা সম্ভব" + +-#: lib/fascist.c:617 ++#: ../lib/fascist.c:690 + msgid "it's derivable from your password entry" + msgstr "আপনার পাসওয়ার্ড এনট্রি থেকে এটি আহরণ করা সম্ভব" + +-#: lib/fascist.c:674 +-msgid "you are not registered in the password file" +-msgstr "পাসওয়ার্ড ফাইলের মধ্যে আপনার পরিচয় নিবন্ধিত নয়" +- +-#: lib/fascist.c:709 ++#: ../lib/fascist.c:726 + msgid "it is WAY too short" + msgstr "এটি অত্যাধিক ছোট" + +-#: lib/fascist.c:714 ++#: ../lib/fascist.c:731 + msgid "it is too short" + msgstr "এটি অতিমাত্রায় ছোট" + +-#: lib/fascist.c:731 ++#: ../lib/fascist.c:748 + msgid "it does not contain enough DIFFERENT characters" + msgstr "এর মধ্যে উপস্থিত অক্ষরগুলির মধ্যে পর্যাপ্ত বৈচিত্র উপস্থিত নেই" + +-#: lib/fascist.c:745 ++#: ../lib/fascist.c:762 + msgid "it is all whitespace" + msgstr "এটি শুধুমাত্র শূণ্যস্থান দ্বারা গঠিত হয়েছে" + +-#: lib/fascist.c:764 ++#: ../lib/fascist.c:781 + msgid "it is too simplistic/systematic" + msgstr "এটি অত্যাধিক সরল/গতানুগতিক" + +-#: lib/fascist.c:769 ++#: ../lib/fascist.c:786 + msgid "it looks like a National Insurance number." + msgstr "এটি একটি বীমার অ্যাকাউন্টের সংখ্যার অনুরূপ।" + +-#: lib/fascist.c:801 ++#: ../lib/fascist.c:813 + msgid "it is based on a dictionary word" + msgstr "এটি অভিধানের একটি শব্দের ভিত্তিতে নির্ধারিত হয়েছে" + +-#: lib/fascist.c:820 ++#: ../lib/fascist.c:832 + msgid "it is based on a (reversed) dictionary word" + msgstr "এটি অভিধানের একটি শব্দের (বিপরীত) ভিত্তিতে নির্ধারিত হয়েছে" + +-#: lib/fascist.c:865 ++#: ../lib/fascist.c:867 + msgid "error loading dictionary" +-msgstr "" ++msgstr "অভিধান লোড হতে সমস্যা" +diff -urN cracklib-2.9.6.old/po/ca.po cracklib-2.9.6.new/po/ca.po +--- cracklib-2.9.6.old/po/ca.po 1970-01-01 01:00:00.000000000 +0100 ++++ cracklib-2.9.6.new/po/ca.po 2018-10-09 11:37:49.699355368 +0200 +@@ -0,0 +1,79 @@ ++# Robert Antoni Buj Gelonch , 2016. #zanata ++msgid "" ++msgstr "" ++"Project-Id-Version: cracklib 2.9.6\n" ++"Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" ++"POT-Creation-Date: 2015-08-18 13:45-0500\n" ++"PO-Revision-Date: 2016-10-08 03:48+0000\n" ++"Last-Translator: Robert Antoni Buj Gelonch \n" ++"Language-Team: Catalan\n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++"Language: ca\n" ++"Plural-Forms: nplurals=2; plural=(n != 1)\n" ++"X-Generator: Zanata 4.6.2\n" ++ ++#: lib/fascist.c:516 ++msgid "it is based on your username" ++msgstr "es basa en el vostre nom d'usuari" ++ ++#: lib/fascist.c:576 ++msgid "it is based upon your password entry" ++msgstr "es basa en la introducció de la vostra contrasenya" ++ ++#: lib/fascist.c:591 ++msgid "it is derived from your password entry" ++msgstr "es deriva a partir de la introducció de la vostra contrasenya" ++ ++#: lib/fascist.c:599 ++msgid "it's derived from your password entry" ++msgstr "es deriva a partir de la introducció de la vostra contrasenya" ++ ++#: lib/fascist.c:608 ++msgid "it is derivable from your password entry" ++msgstr "es pot derivar a partir de la introducció de la vostra contrasenya" ++ ++#: lib/fascist.c:617 ++msgid "it's derivable from your password entry" ++msgstr "es pot derivar a partir de la introducció de la vostra contrasenya" ++ ++#: lib/fascist.c:674 ++msgid "you are not registered in the password file" ++msgstr "no esteu registrat al fitxer de contrasenyes" ++ ++#: lib/fascist.c:709 ++msgid "it is WAY too short" ++msgstr "és massa curt" ++ ++#: lib/fascist.c:714 ++msgid "it is too short" ++msgstr "és massa curt" ++ ++#: lib/fascist.c:731 ++msgid "it does not contain enough DIFFERENT characters" ++msgstr "no conté prou caràcters DIFERENTS" ++ ++#: lib/fascist.c:745 ++msgid "it is all whitespace" ++msgstr "és tot l'espai en blanc" ++ ++#: lib/fascist.c:764 ++msgid "it is too simplistic/systematic" ++msgstr "és massa simplista/sistemàtica" ++ ++#: lib/fascist.c:769 ++msgid "it looks like a National Insurance number." ++msgstr "sembla un número de la seguretat social." ++ ++#: lib/fascist.c:801 ++msgid "it is based on a dictionary word" ++msgstr "es basa en una paraula del diccionari" ++ ++#: lib/fascist.c:820 ++msgid "it is based on a (reversed) dictionary word" ++msgstr "es basa en una paraula del diccionari (revers)" ++ ++#: lib/fascist.c:865 ++msgid "error loading dictionary" ++msgstr "error en carregar el diccionari" +diff -urN cracklib-2.9.6.old/po/cs.po cracklib-2.9.6.new/po/cs.po +--- cracklib-2.9.6.old/po/cs.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/cs.po 2018-10-09 11:37:54.554475070 +0200 +@@ -1,19 +1,21 @@ + # translation of cracklib.po to czech + # Klara Cihlarova , 2003. +-# ++# Jan Dittberner , 2016. #zanata ++# Marek Suchánek , 2016. #zanata + msgid "" + msgstr "" +-"Project-Id-Version: cracklib\n" ++"Project-Id-Version: cracklib 2.9.6\n" + "Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" + "POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2005-06-23 13:18+02:00\n" +-"Last-Translator: Klara Cihlarova \n" ++"PO-Revision-Date: 2016-08-31 01:14+0000\n" ++"Last-Translator: Marek Suchánek \n" + "Language-Team: czech \n" +-"Language: \n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: KBabel 1.2\n" ++"Language: cs\n" ++"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" ++"X-Generator: Zanata 4.6.2\n" + + #: lib/fascist.c:516 + msgid "it is based on your username" +@@ -77,4 +79,4 @@ + + #: lib/fascist.c:865 + msgid "error loading dictionary" +-msgstr "" ++msgstr "chyba při načítání slovníku" +diff -urN cracklib-2.9.6.old/po/da.po cracklib-2.9.6.new/po/da.po +--- cracklib-2.9.6.old/po/da.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/da.po 2018-10-09 11:39:10.434360676 +0200 +@@ -2,20 +2,22 @@ + # Copyright (C) 2005 Free Software Foundation, Inc. + # This file is distributed under the same license as the PACKAGE package. + # Martin Møller , 2005. +-# ++# Jan Dittberner , 2016. #zanata ++# scootergrisen , 2017. #zanata + msgid "" + msgstr "" +-"Project-Id-Version: cracklib\n" ++"Project-Id-Version: cracklib 2.9.6\n" + "Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" + "POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2005-08-16 20:11+0200\n" +-"Last-Translator: Martin Møller \n" ++"PO-Revision-Date: 2017-10-06 02:39+0000\n" ++"Last-Translator: scootergrisen \n" + "Language-Team: Dansk \n" +-"Language: \n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: KBabel 1.10.1\n" ++"Language: da\n" ++"Plural-Forms: nplurals=2; plural=(n != 1)\n" ++"X-Generator: Zanata 4.6.2\n" + + #: lib/fascist.c:516 + msgid "it is based on your username" +@@ -43,7 +45,7 @@ + + #: lib/fascist.c:674 + msgid "you are not registered in the password file" +-msgstr "Du er ikke optegnet i adgangskodefilen" ++msgstr "du er ikke optegnet i adgangskodefilen" + + #: lib/fascist.c:709 + msgid "it is WAY too short" +@@ -59,7 +61,7 @@ + + #: lib/fascist.c:745 + msgid "it is all whitespace" +-msgstr "det er kun mellemrum/blanke tegn" ++msgstr "alt er blanktegn" + + #: lib/fascist.c:764 + msgid "it is too simplistic/systematic" +@@ -67,7 +69,7 @@ + + #: lib/fascist.c:769 + msgid "it looks like a National Insurance number." +-msgstr "det ligner et CPR nummer." ++msgstr "det ligner et \"National Insurance\"-nummer." + + #: lib/fascist.c:801 + msgid "it is based on a dictionary word" +@@ -79,4 +81,4 @@ + + #: lib/fascist.c:865 + msgid "error loading dictionary" +-msgstr "" ++msgstr "fejl ved indlæsning af ordbog" +diff -urN cracklib-2.9.6.old/po/de.po cracklib-2.9.6.new/po/de.po +--- cracklib-2.9.6.old/po/de.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/de.po 2018-10-09 11:38:15.372988343 +0200 +@@ -4,21 +4,21 @@ + # Antje Faber , 2000-2003. + # Karl Eichwalder , 1999-2003. + # Martin Lohner , 2000. +-# ++# Jan Dittberner , 2016. #zanata + msgid "" + msgstr "" +-"Project-Id-Version: new\n" ++"Project-Id-Version: cracklib 2.9.6\n" + "Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" + "POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2003-11-27 18:31GMT\n" +-"Last-Translator: Novell Language \n" ++"PO-Revision-Date: 2018-08-16 12:44+0000\n" ++"Last-Translator: Copied by Zanata \n" + "Language-Team: Novell Language \n" +-"Language: \n" + "MIME-Version: 1.0\n" +-"Content-Type: text/plain; charset=utf-8\n" ++"Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" ++"Language: de\n" + "Plural-Forms: nplurals=2; plural=(n != 1);\n" +-"X-Generator: KBabel 1.0.2\n" ++"X-Generator: Zanata 4.6.2\n" + + #: lib/fascist.c:516 + msgid "it is based on your username" +@@ -82,4 +82,4 @@ + + #: lib/fascist.c:865 + msgid "error loading dictionary" +-msgstr "" ++msgstr "Fehler beim Laden des Wörterbuchs" +diff -urN cracklib-2.9.6.old/po/el.po cracklib-2.9.6.new/po/el.po +--- cracklib-2.9.6.old/po/el.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/el.po 2018-10-09 11:38:32.974426610 +0200 +@@ -4,20 +4,21 @@ + # This file is distributed under the same license as the PACKAGE package. + # Kostas Boukouvalas , 2005. + # Hellenic SuSE Translation Group , 2005. +-# ++# Jan Dittberner , 2016. #zanata + msgid "" + msgstr "" +-"Project-Id-Version: el\n" ++"Project-Id-Version: cracklib 2.9.6\n" + "Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" + "POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2005-08-26 19:19+0300\n" +-"Last-Translator: Hellenic SuSE Translation Group \n" ++"PO-Revision-Date: 2016-06-18 01:02+0000\n" ++"Last-Translator: Copied by Zanata \n" + "Language-Team: Hellenic-Ελληνικά-Greek \n" +-"Language: \n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: KBabel 1.10\n" ++"Language: el\n" ++"Plural-Forms: nplurals=2; plural=(n != 1)\n" ++"X-Generator: Zanata 4.6.2\n" + + #: lib/fascist.c:516 + msgid "it is based on your username" +diff -urN cracklib-2.9.6.old/po/es.po cracklib-2.9.6.new/po/es.po +--- cracklib-2.9.6.old/po/es.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/es.po 2018-10-09 11:38:49.684843285 +0200 +@@ -1,81 +1,83 @@ + # translation of cracklib.po to + # This file is put in the public domain. +-# , 2003 +-# ++#, 2003 ++# Waldo Ribeiro , 2016. #zanata ++# Máximo Castañeda Riloba , 2017. #zanata + msgid "" + msgstr "" +-"Project-Id-Version: cracklib\n" ++"Project-Id-Version: cracklib 2.9.6\n" + "Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" + "POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2005-06-23 13:17+02:00\n" +-"Last-Translator: Novell Language \n" +-"Language-Team: Novell Language \n" +-"Language: \n" ++"PO-Revision-Date: 2018-08-16 12:44+0000\n" ++"Last-Translator: Copied by Zanata \n" ++"Language-Team: Novell Language \n" + "MIME-Version: 1.0\n" +-"Content-Type: text/plain; charset=utf-8\n" ++"Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: KBabel 1.0.1\n" ++"Language: es\n" ++"Plural-Forms: nplurals=2; plural=(n != 1)\n" ++"X-Generator: Zanata 4.6.2\n" + + #: lib/fascist.c:516 + msgid "it is based on your username" +-msgstr "Está basada en su nombre de usuario." ++msgstr "está basada en su nombre de usuario" + + #: lib/fascist.c:576 + msgid "it is based upon your password entry" +-msgstr "Está basada en su contraseña." ++msgstr "está basada en su contraseña" + + #: lib/fascist.c:591 + msgid "it is derived from your password entry" +-msgstr "Se deriva de su contraseña." ++msgstr "se deriva de su contraseña" + + #: lib/fascist.c:599 + msgid "it's derived from your password entry" +-msgstr "Se deriva de su contraseña." ++msgstr "se deriva de su contraseña" + + #: lib/fascist.c:608 + msgid "it is derivable from your password entry" +-msgstr "Puede derivarse de su contraseña." ++msgstr "puede derivarse de su contraseña" + + #: lib/fascist.c:617 + msgid "it's derivable from your password entry" +-msgstr "Puede derivarse de su contraseña." ++msgstr "puede derivarse de su contraseña" + + #: lib/fascist.c:674 + msgid "you are not registered in the password file" +-msgstr "No está registrado en el archivo de contraseñas." ++msgstr "no está registrado en el archivo de contraseñas" + + #: lib/fascist.c:709 + msgid "it is WAY too short" +-msgstr "Es DEMASIADO corta." ++msgstr "es DEMASIADO corta" + + #: lib/fascist.c:714 + msgid "it is too short" +-msgstr "Es demasiado corta." ++msgstr "es demasiado corta" + + #: lib/fascist.c:731 + msgid "it does not contain enough DIFFERENT characters" +-msgstr "No contiene suficientes caracteres DIFERENTES." ++msgstr "no contiene suficientes caracteres DIFERENTES" + + #: lib/fascist.c:745 + msgid "it is all whitespace" +-msgstr "Está formada sólo por espacios." ++msgstr "está formada sólo por espacios" + + #: lib/fascist.c:764 + msgid "it is too simplistic/systematic" +-msgstr "Es demasiado simple/sistemática." ++msgstr "es demasiado simple/sistemática" + + #: lib/fascist.c:769 + msgid "it looks like a National Insurance number." +-msgstr "Parece un número de la Seguridad Social." ++msgstr "parece un número de la Seguridad Social" + + #: lib/fascist.c:801 + msgid "it is based on a dictionary word" +-msgstr "Está basada en una palabra del diccionario." ++msgstr "está basada en una palabra del diccionario" + + #: lib/fascist.c:820 + msgid "it is based on a (reversed) dictionary word" +-msgstr "Está basada en una palabra del diccionario escrita al revés." ++msgstr "está basada en una palabra del diccionario escrita al revés" + + #: lib/fascist.c:865 + msgid "error loading dictionary" +-msgstr "" ++msgstr "error al cargar el diccionario" +diff -urN cracklib-2.9.6.old/po/eu.po cracklib-2.9.6.new/po/eu.po +--- cracklib-2.9.6.old/po/eu.po 1970-01-01 01:00:00.000000000 +0100 ++++ cracklib-2.9.6.new/po/eu.po 2018-10-09 11:38:46.701768899 +0200 +@@ -0,0 +1,79 @@ ++# Mikel Olasagasti Uranga , 2017. #zanata ++msgid "" ++msgstr "" ++"Project-Id-Version: cracklib 2.9.6\n" ++"Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" ++"POT-Creation-Date: 2015-08-18 13:45-0500\n" ++"PO-Revision-Date: 2017-04-11 05:46+0000\n" ++"Last-Translator: Mikel Olasagasti Uranga \n" ++"Language-Team: Basque\n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++"Language: eu\n" ++"Plural-Forms: nplurals=2; plural=(n != 1)\n" ++"X-Generator: Zanata 4.6.2\n" ++ ++#: lib/fascist.c:516 ++msgid "it is based on your username" ++msgstr "zure erabiltzaile-izenean oinarrituta dago" ++ ++#: lib/fascist.c:576 ++msgid "it is based upon your password entry" ++msgstr "" ++ ++#: lib/fascist.c:591 ++msgid "it is derived from your password entry" ++msgstr "" ++ ++#: lib/fascist.c:599 ++msgid "it's derived from your password entry" ++msgstr "" ++ ++#: lib/fascist.c:608 ++msgid "it is derivable from your password entry" ++msgstr "" ++ ++#: lib/fascist.c:617 ++msgid "it's derivable from your password entry" ++msgstr "" ++ ++#: lib/fascist.c:674 ++msgid "you are not registered in the password file" ++msgstr "" ++ ++#: lib/fascist.c:709 ++msgid "it is WAY too short" ++msgstr "OSO laburra da" ++ ++#: lib/fascist.c:714 ++msgid "it is too short" ++msgstr "laburregia da" ++ ++#: lib/fascist.c:731 ++msgid "it does not contain enough DIFFERENT characters" ++msgstr "ez ditu nahikoa karaktere EZBERDIN" ++ ++#: lib/fascist.c:745 ++msgid "it is all whitespace" ++msgstr "karaktere guztiak zuriuneak dira" ++ ++#: lib/fascist.c:764 ++msgid "it is too simplistic/systematic" ++msgstr "oso sinple edo sistematikoa" ++ ++#: lib/fascist.c:769 ++msgid "it looks like a National Insurance number." ++msgstr "Gizarte Segurantza zenbakia dirudi (National Insurance)" ++ ++#: lib/fascist.c:801 ++msgid "it is based on a dictionary word" ++msgstr "hiztegiko hitz batean oinarritua da" ++ ++#: lib/fascist.c:820 ++msgid "it is based on a (reversed) dictionary word" ++msgstr "hiztegiko hitz batean oinarritua da (alderantziz)" ++ ++#: lib/fascist.c:865 ++msgid "error loading dictionary" ++msgstr "errorea hiztegia kargatzean" +diff -urN cracklib-2.9.6.old/po/fi.po cracklib-2.9.6.new/po/fi.po +--- cracklib-2.9.6.old/po/fi.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/fi.po 2018-10-09 11:39:09.467336563 +0200 +@@ -2,20 +2,22 @@ + # Copyright (C) 2005 Free Software Foundation, Inc. + # This file is distributed under the same license as the PACKAGE package. + # Jyri Palokangas , 2005. +-# ++# Jan Dittberner , 2016. #zanata ++# Jiri Grönroos , 2017. #zanata + msgid "" + msgstr "" +-"Project-Id-Version: cracklib\n" ++"Project-Id-Version: cracklib 2.9.6\n" + "Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" + "POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2005-08-25 15:20+0300\n" +-"Last-Translator: Jyri Palokangas \n" +-"Language-Team: \n" +-"Language: \n" ++"PO-Revision-Date: 2017-03-26 09:02+0000\n" ++"Last-Translator: Jiri Grönroos \n" ++"Language-Team: \n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: KBabel 1.10.2\n" ++"Language: fi\n" ++"Plural-Forms: nplurals=2; plural=(n != 1)\n" ++"X-Generator: Zanata 4.6.2\n" + + #: lib/fascist.c:516 + msgid "it is based on your username" +@@ -79,4 +81,4 @@ + + #: lib/fascist.c:865 + msgid "error loading dictionary" +-msgstr "" ++msgstr "virhe sanakirjaa ladatessa" +diff -urN cracklib-2.9.6.old/po/fr.po cracklib-2.9.6.new/po/fr.po +--- cracklib-2.9.6.old/po/fr.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/fr.po 2018-10-09 11:38:58.577065014 +0200 +@@ -1,20 +1,22 @@ + # translation of cracklib.po to Français + # This file is put in the public domain. + # Patricia Vaz , 2003 +-# ++# Jan Dittberner , 2016. #zanata ++# Jean-Baptiste Holcroft , 2016. #zanata + msgid "" + msgstr "" +-"Project-Id-Version: cracklib\n" ++"Project-Id-Version: cracklib 2.9.6\n" + "Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" + "POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2005-06-23 13:17+02:00\n" +-"Last-Translator: Novell Language \n" ++"PO-Revision-Date: 2018-08-16 12:44+0000\n" ++"Last-Translator: Copied by Zanata \n" + "Language-Team: Novell Language \n" +-"Language: \n" + "MIME-Version: 1.0\n" +-"Content-Type: text/plain; charset=utf-8\n" ++"Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: KBabel 1.0.1\n" ++"Language: fr\n" ++"Plural-Forms: nplurals=2; plural=(n > 1)\n" ++"X-Generator: Zanata 4.6.2\n" + + #: lib/fascist.c:516 + msgid "it is based on your username" +@@ -78,4 +80,4 @@ + + #: lib/fascist.c:865 + msgid "error loading dictionary" +-msgstr "" ++msgstr "erreur lors du chargement du dictionnaire" +diff -urN cracklib-2.9.6.old/po/gu.po cracklib-2.9.6.new/po/gu.po +--- cracklib-2.9.6.old/po/gu.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/gu.po 2018-10-09 11:57:33.760928751 +0200 +@@ -1,84 +1,85 @@ + # translation of cracklib.default.cracklib.gu.po to Gujarati + # Copyright (C) 2009 Free Software Foundation, Inc. + # This file is distributed under the same license as the PACKAGE package. +-# ++# + # Ankit Patel , 2009. ++# swkothar , 2013. #zanata + msgid "" + msgstr "" + "Project-Id-Version: cracklib.default.cracklib.gu\n" +-"Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" +-"POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2009-10-22 18:13+0530\n" +-"Last-Translator: Ankit Patel \n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2012-12-14 16:11-0600\n" ++"PO-Revision-Date: 2013-09-24 05:01-0400\n" ++"Last-Translator: swkothar \n" + "Language-Team: Gujarati \n" +-"Language: gu\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: KBabel 1.11.4\n" +-"Plural-Forms: nplurals=2; plural=(n!=1);\n" ++"Language: gu\n" ++"Plural-Forms: nplurals=2; plural=(n!=1);\n" + "\n" ++"X-Generator: Zanata 3.1.2\n" ++ ++#: ../lib/fascist.c:550 ++msgid "you are not registered in the password file" ++msgstr "પાસવર્ડ ફાઈલમાં તમારી નોંધ થયેલ નથી" + +-#: lib/fascist.c:516 ++#: ../lib/fascist.c:564 + msgid "it is based on your username" + msgstr "તમારા વપરાશકર્તા નામ પર આધારિત છે" + +-#: lib/fascist.c:576 ++#: ../lib/fascist.c:629 + msgid "it is based upon your password entry" + msgstr "તમારા પાસવર્ડ પ્રવેશ પર આધારિત છે" + +-#: lib/fascist.c:591 ++#: ../lib/fascist.c:649 + msgid "it is derived from your password entry" + msgstr "તમારા પાસવર્ડ પ્રવેશમાંથી તારવવામાં આવેલ છે" + +-#: lib/fascist.c:599 ++#: ../lib/fascist.c:662 + msgid "it's derived from your password entry" + msgstr "તમારા પાસવર્ડ પ્રવેશમાંથી તારવવામાં આવેલ છે" + +-#: lib/fascist.c:608 ++#: ../lib/fascist.c:676 + msgid "it is derivable from your password entry" + msgstr "તમારા પાસવર્ડ પ્રવેશમાંથી તારવી શકાય તેવું છે" + +-#: lib/fascist.c:617 ++#: ../lib/fascist.c:690 + msgid "it's derivable from your password entry" + msgstr "તમારા પાસવર્ડ પ્રવેશમાંથી તારવી શકાય તેવું છે" + +-#: lib/fascist.c:674 +-msgid "you are not registered in the password file" +-msgstr "પાસવર્ડ ફાઈલમાં તમારી નોંધ થયેલ નથી" +- +-#: lib/fascist.c:709 ++#: ../lib/fascist.c:726 + msgid "it is WAY too short" + msgstr "ખૂબ ટૂંકો છે" + +-#: lib/fascist.c:714 ++#: ../lib/fascist.c:731 + msgid "it is too short" + msgstr "ખૂબ ટૂંકો છે" + +-#: lib/fascist.c:731 ++#: ../lib/fascist.c:748 + msgid "it does not contain enough DIFFERENT characters" + msgstr "ભિન્ન અક્ષરો સમાવતો નથી" + +-#: lib/fascist.c:745 ++#: ../lib/fascist.c:762 + msgid "it is all whitespace" + msgstr "આ બધી ખાલી જગ્યા છે" + +-#: lib/fascist.c:764 ++#: ../lib/fascist.c:781 + msgid "it is too simplistic/systematic" + msgstr "ખૂબ સરળ છે/પદ્ધતિસરનું છે" + +-#: lib/fascist.c:769 ++#: ../lib/fascist.c:786 + msgid "it looks like a National Insurance number." + msgstr "રાષ્ટ્રિય વીમા નંબર જેવું દેખાય છે." + +-#: lib/fascist.c:801 ++#: ../lib/fascist.c:813 + msgid "it is based on a dictionary word" + msgstr "શબ્દકોષના શબ્દ પર આધારિત છે" + +-#: lib/fascist.c:820 ++#: ../lib/fascist.c:832 + msgid "it is based on a (reversed) dictionary word" + msgstr "(આરક્ષિત) શબ્દકોષના શબ્દ પર આધારિત છે" + +-#: lib/fascist.c:865 ++#: ../lib/fascist.c:867 + msgid "error loading dictionary" +-msgstr "" ++msgstr "શબ્દકોષને લાવી રહ્યા હોય ત્યારે ભૂલ" +diff -urN cracklib-2.9.6.old/po/he.po cracklib-2.9.6.new/po/he.po +--- cracklib-2.9.6.old/po/he.po 1970-01-01 01:00:00.000000000 +0100 ++++ cracklib-2.9.6.new/po/he.po 2018-10-09 11:38:19.242084195 +0200 +@@ -0,0 +1,79 @@ ++# Yaron Shahrabani , 2018. #zanata ++msgid "" ++msgstr "" ++"Project-Id-Version: cracklib 2.9.6\n" ++"Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" ++"POT-Creation-Date: 2015-08-18 13:45-0500\n" ++"PO-Revision-Date: 2018-03-20 10:17+0000\n" ++"Last-Translator: Yaron Shahrabani \n" ++"Language-Team: Hebrew\n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++"Language: he\n" ++"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n==2 ? 2 : 1;\n" ++"X-Generator: Zanata 4.6.2\n" ++ ++#: lib/fascist.c:516 ++msgid "it is based on your username" ++msgstr "מבוססת על שם המשתמש שלך" ++ ++#: lib/fascist.c:576 ++msgid "it is based upon your password entry" ++msgstr "" ++ ++#: lib/fascist.c:591 ++msgid "it is derived from your password entry" ++msgstr "" ++ ++#: lib/fascist.c:599 ++msgid "it's derived from your password entry" ++msgstr "" ++ ++#: lib/fascist.c:608 ++msgid "it is derivable from your password entry" ++msgstr "" ++ ++#: lib/fascist.c:617 ++msgid "it's derivable from your password entry" ++msgstr "" ++ ++#: lib/fascist.c:674 ++msgid "you are not registered in the password file" ++msgstr "לא נרשמת בקובץ הססמאות" ++ ++#: lib/fascist.c:709 ++msgid "it is WAY too short" ++msgstr "קצרה ביותר" ++ ++#: lib/fascist.c:714 ++msgid "it is too short" ++msgstr "קצרה מדי" ++ ++#: lib/fascist.c:731 ++msgid "it does not contain enough DIFFERENT characters" ++msgstr "אינה מכילה מספיק תווים שונים" ++ ++#: lib/fascist.c:745 ++msgid "it is all whitespace" ++msgstr "כולה רווחים" ++ ++#: lib/fascist.c:764 ++msgid "it is too simplistic/systematic" ++msgstr "מערכתית/פשוטה מדי" ++ ++#: lib/fascist.c:769 ++msgid "it looks like a National Insurance number." ++msgstr "נראית כמו מספר תעודת זהות/ביטוח לאומי" ++ ++#: lib/fascist.c:801 ++msgid "it is based on a dictionary word" ++msgstr "מבוססת על מילה במילון" ++ ++#: lib/fascist.c:820 ++msgid "it is based on a (reversed) dictionary word" ++msgstr "מבוססת על (היפוך של) מילה במילון" ++ ++#: lib/fascist.c:865 ++msgid "error loading dictionary" ++msgstr "שגיאה בטעינת המילון" +diff -urN cracklib-2.9.6.old/po/hi.po cracklib-2.9.6.new/po/hi.po +--- cracklib-2.9.6.old/po/hi.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/hi.po 2018-10-09 11:57:33.760928751 +0200 +@@ -2,84 +2,85 @@ + # Hindi translations for cracklib package. + # Copyright (C) 2009, 2010 Free Software Foundation, Inc. + # This file is distributed under the same license as the cracklib package. +-# ++# + # Rajesh Ranjan , 2010. ++# rranjan , 2013. #zanata + msgid "" + msgstr "" + "Project-Id-Version: cracklib.default.cracklib\n" +-"Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" +-"POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2010-04-06 12:21+0530\n" +-"Last-Translator: Rajesh Ranjan \n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2012-12-14 16:11-0600\n" ++"PO-Revision-Date: 2013-10-23 04:21-0400\n" ++"Last-Translator: rranjan \n" + "Language-Team: Hindi \n" +-"Language: \n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: KBabel 1.11.4\n" ++"Language: hi\n" + "Plural-Forms: nplurals=2; plural=(n!=1);\n" + "\n" ++"X-Generator: Zanata 3.1.2\n" + +-#: lib/fascist.c:516 ++#: ../lib/fascist.c:550 ++msgid "you are not registered in the password file" ++msgstr "आप कूटशब्द फ़ाइल में पंजीकृत नहीं हैं" ++ ++#: ../lib/fascist.c:564 + msgid "it is based on your username" + msgstr "यह आपके उपयोक्ता नाम पर आधारित है" + +-#: lib/fascist.c:576 ++#: ../lib/fascist.c:629 + msgid "it is based upon your password entry" + msgstr "यह आपकी कूटशब्द प्रविष्टि पर आधारित है" + +-#: lib/fascist.c:591 ++#: ../lib/fascist.c:649 + msgid "it is derived from your password entry" + msgstr "यह आपकी कूटशब्द प्रविष्टि से निकला हुआ है" + +-#: lib/fascist.c:599 ++#: ../lib/fascist.c:662 + msgid "it's derived from your password entry" + msgstr "यह आपकी कूटशब्द प्रविष्टि से निकला हुआ है" + +-#: lib/fascist.c:608 ++#: ../lib/fascist.c:676 + msgid "it is derivable from your password entry" + msgstr "यह आपकी कूटशब्द प्रविष्टि से निकलने योग्य है" + +-#: lib/fascist.c:617 ++#: ../lib/fascist.c:690 + msgid "it's derivable from your password entry" + msgstr "यह आपकी कूटशब्द प्रविष्टि से निकलने योग्य है" + +-#: lib/fascist.c:674 +-msgid "you are not registered in the password file" +-msgstr "आप कूटशब्द फ़ाइल में पंजीकृत नहीं हैं" +- +-#: lib/fascist.c:709 ++#: ../lib/fascist.c:726 + msgid "it is WAY too short" + msgstr "यह बहुत ही छोटा है" + +-#: lib/fascist.c:714 ++#: ../lib/fascist.c:731 + msgid "it is too short" + msgstr "यह बहुत छोटा है" + +-#: lib/fascist.c:731 ++#: ../lib/fascist.c:748 + msgid "it does not contain enough DIFFERENT characters" + msgstr "इसमें पर्याप्त मात्रा में भिन्न वर्ण समाहित नहीं हैं" + +-#: lib/fascist.c:745 ++#: ../lib/fascist.c:762 + msgid "it is all whitespace" + msgstr "यह पूरी तरह से खाली स्थान है" + +-#: lib/fascist.c:764 ++#: ../lib/fascist.c:781 + msgid "it is too simplistic/systematic" + msgstr "यह काफी सरल/क्रमबद्ध है" + +-#: lib/fascist.c:769 ++#: ../lib/fascist.c:786 + msgid "it looks like a National Insurance number." + msgstr "यह राष्ट्रीय बीमा संख्या की तरह दिखता है." + +-#: lib/fascist.c:801 ++#: ../lib/fascist.c:813 + msgid "it is based on a dictionary word" + msgstr "यह शब्दकोश के शब्द पर आधारित है" + +-#: lib/fascist.c:820 ++#: ../lib/fascist.c:832 + msgid "it is based on a (reversed) dictionary word" + msgstr "यह शब्दकोश के शब्द (विलोम) पर आधारित है" + +-#: lib/fascist.c:865 ++#: ../lib/fascist.c:867 + msgid "error loading dictionary" +-msgstr "" ++msgstr "शब्दकोश लोड करने में त्रुटि" +diff -urN cracklib-2.9.6.old/po/hu.po cracklib-2.9.6.new/po/hu.po +--- cracklib-2.9.6.old/po/hu.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/hu.po 2018-10-09 11:38:16.351012456 +0200 +@@ -2,48 +2,49 @@ + # This file is put in the public domain. + # Marcel Hilzinger , 2003. + # Gábor Szentiványi , 2003 +-# ++# Meskó Balázs , 2016. #zanata + msgid "" + msgstr "" +-"Project-Id-Version: cracklib.hu\n" ++"Project-Id-Version: cracklib 2.9.6\n" + "Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" + "POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2005-08-06 20:20+0100\n" +-"Last-Translator: Szabolcs Varga \n" ++"PO-Revision-Date: 2016-09-10 06:40+0000\n" ++"Last-Translator: Meskó Balázs \n" + "Language-Team: hungarian\n" +-"Language: \n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: KBabel 1.0.1\n" ++"Language: hu\n" ++"Plural-Forms: nplurals=2; plural=(n != 1)\n" ++"X-Generator: Zanata 4.6.2\n" + + #: lib/fascist.c:516 + msgid "it is based on your username" +-msgstr "az Ön felhasználónevén alapszik" ++msgstr "a felhasználónevén alapszik" + + #: lib/fascist.c:576 + msgid "it is based upon your password entry" +-msgstr "az Ön jelszóbejegyzésén alapszik" ++msgstr "a jelszóbejegyzésén alapszik" + + #: lib/fascist.c:591 + msgid "it is derived from your password entry" +-msgstr "az Ön jelszóbejegyzéséból lett származtatva" ++msgstr "a jelszóbejegyzéséből lett származtatva" + + #: lib/fascist.c:599 + msgid "it's derived from your password entry" +-msgstr "az Ön jelszóbejegyzéséból lett származtatva" ++msgstr "a jelszóbejegyzéséből lett származtatva" + + #: lib/fascist.c:608 + msgid "it is derivable from your password entry" +-msgstr "kitalálható az Ön jelszóbejegyzéséből" ++msgstr "kitalálható a jelszóbejegyzéséből" + + #: lib/fascist.c:617 + msgid "it's derivable from your password entry" +-msgstr "kitalálható az Ön jelszóbejegyzéséből" ++msgstr "kitalálható a jelszóbejegyzéséből" + + #: lib/fascist.c:674 + msgid "you are not registered in the password file" +-msgstr "Ön nem szerepel a password fájlban" ++msgstr "nincs regisztrálva a jelszófájlban" + + #: lib/fascist.c:709 + msgid "it is WAY too short" +@@ -59,7 +60,7 @@ + + #: lib/fascist.c:745 + msgid "it is all whitespace" +-msgstr "csak szóközszerű karakterekből áll" ++msgstr "csak üres karakterekből áll" + + #: lib/fascist.c:764 + msgid "it is too simplistic/systematic" +@@ -71,12 +72,12 @@ + + #: lib/fascist.c:801 + msgid "it is based on a dictionary word" +-msgstr "a szótárban megtalálható" ++msgstr "szótári szón alapszik" + + #: lib/fascist.c:820 + msgid "it is based on a (reversed) dictionary word" +-msgstr "visszafelé olvasva egy ismert szót ad" ++msgstr "(megfordított) szótári szón alapszik" + + #: lib/fascist.c:865 + msgid "error loading dictionary" +-msgstr "" ++msgstr "hiba a szótár betöltésekor" +diff -urN cracklib-2.9.6.old/po/id.po cracklib-2.9.6.new/po/id.po +--- cracklib-2.9.6.old/po/id.po 1970-01-01 01:00:00.000000000 +0100 ++++ cracklib-2.9.6.new/po/id.po 2018-10-09 11:38:48.634817101 +0200 +@@ -0,0 +1,79 @@ ++# Andika Triwidada , 2017. #zanata ++msgid "" ++msgstr "" ++"Project-Id-Version: cracklib 2.9.6\n" ++"Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" ++"POT-Creation-Date: 2015-08-18 13:45-0500\n" ++"PO-Revision-Date: 2017-07-24 12:45+0000\n" ++"Last-Translator: Andika Triwidada \n" ++"Language-Team: Indonesian\n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++"Language: id\n" ++"Plural-Forms: nplurals=1; plural=0\n" ++"X-Generator: Zanata 4.6.2\n" ++ ++#: lib/fascist.c:516 ++msgid "it is based on your username" ++msgstr "ini berbasis pada nama Anda" ++ ++#: lib/fascist.c:576 ++msgid "it is based upon your password entry" ++msgstr "ini berbasis pada entri kata sandi Anda" ++ ++#: lib/fascist.c:591 ++msgid "it is derived from your password entry" ++msgstr "ini diturunkan dari entri kata sandi Anda" ++ ++#: lib/fascist.c:599 ++msgid "it's derived from your password entry" ++msgstr "ini diturunkan dari entri kata sandi Anda" ++ ++#: lib/fascist.c:608 ++msgid "it is derivable from your password entry" ++msgstr "ini dapat diturunkan dari entri kata sandi Anda" ++ ++#: lib/fascist.c:617 ++msgid "it's derivable from your password entry" ++msgstr "ini dapat diturunkan dari entri kata sandi Anda" ++ ++#: lib/fascist.c:674 ++msgid "you are not registered in the password file" ++msgstr "Anda tidak terdaftar dalam berkas kata sandi" ++ ++#: lib/fascist.c:709 ++msgid "it is WAY too short" ++msgstr "ini KETERLALUAN pendeknya" ++ ++#: lib/fascist.c:714 ++msgid "it is too short" ++msgstr "ini terlalu pendek" ++ ++#: lib/fascist.c:731 ++msgid "it does not contain enough DIFFERENT characters" ++msgstr "ini tidak memuat cukup karakter yang BERBEDA" ++ ++#: lib/fascist.c:745 ++msgid "it is all whitespace" ++msgstr "ini semua keluarga spasi" ++ ++#: lib/fascist.c:764 ++msgid "it is too simplistic/systematic" ++msgstr "ini terlalu sederhana/sistematis" ++ ++#: lib/fascist.c:769 ++msgid "it looks like a National Insurance number." ++msgstr "ini tampak seperti nomor Asuransi Nasional." ++ ++#: lib/fascist.c:801 ++msgid "it is based on a dictionary word" ++msgstr "ini berbasis pada kata kamus" ++ ++#: lib/fascist.c:820 ++msgid "it is based on a (reversed) dictionary word" ++msgstr "ini berbasis pada kata kamus (terbalik)" ++ ++#: lib/fascist.c:865 ++msgid "error loading dictionary" ++msgstr "galat saat memuat kamus" +diff -urN cracklib-2.9.6.old/po/it.po cracklib-2.9.6.new/po/it.po +--- cracklib-2.9.6.old/po/it.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/it.po 2018-10-09 11:38:39.759595795 +0200 +@@ -1,20 +1,22 @@ + # SOME DESCRIPTIVE TITLE. + # This file is put in the public domain. + # FIRST AUTHOR , YEAR. +-# ++# Jan Dittberner , 2016. #zanata ++# Luca Ciavatta , 2017. #zanata + msgid "" + msgstr "" +-"Project-Id-Version: cracklib\n" ++"Project-Id-Version: cracklib 2.9.6\n" + "Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" + "POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2005-06-23 13:15+02:00\n" +-"Last-Translator: Novell Language \n" ++"PO-Revision-Date: 2018-08-16 12:44+0000\n" ++"Last-Translator: Copied by Zanata \n" + "Language-Team: Novell Language \n" +-"Language: \n" + "MIME-Version: 1.0\n" +-"Content-Type: text/plain; charset=utf-8\n" ++"Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: KBabel 0.9.6\n" ++"Language: it\n" ++"Plural-Forms: nplurals=2; plural=(n != 1)\n" ++"X-Generator: Zanata 4.6.2\n" + + #: lib/fascist.c:516 + msgid "it is based on your username" +@@ -78,4 +80,4 @@ + + #: lib/fascist.c:865 + msgid "error loading dictionary" +-msgstr "" ++msgstr "Errore di caricamento del dizionario" +diff -urN cracklib-2.9.6.old/po/ja.po cracklib-2.9.6.new/po/ja.po +--- cracklib-2.9.6.old/po/ja.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/ja.po 2018-10-09 11:38:02.366667678 +0200 +@@ -2,19 +2,22 @@ + # Copyright (C) YEAR Free Software Foundation, Inc. + # This file is distributed under the same license as the PACKAGE package. + # FIRST AUTHOR , YEAR. +-# ++# Jan Dittberner , 2016. #zanata ++# Ludek Janda , 2018. #zanata + msgid "" + msgstr "" +-"Project-Id-Version: cracklib\n" ++"Project-Id-Version: cracklib 2.9.6\n" + "Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" + "POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2005-08-18 11:52-0000\n" +-"Last-Translator: Novell Language \n" ++"PO-Revision-Date: 2018-08-16 12:48+0000\n" ++"Last-Translator: Copied by Zanata \n" + "Language-Team: Novell Language \n" +-"Language: \n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" ++"Language: ja\n" ++"Plural-Forms: nplurals=1; plural=0\n" ++"X-Generator: Zanata 4.6.2\n" + + #: lib/fascist.c:516 + msgid "it is based on your username" +@@ -78,4 +81,4 @@ + + #: lib/fascist.c:865 + msgid "error loading dictionary" +-msgstr "" ++msgstr "辞書の読み込み中二エラーが発生しました" +diff -urN cracklib-2.9.6.old/po/kk.po cracklib-2.9.6.new/po/kk.po +--- cracklib-2.9.6.old/po/kk.po 1970-01-01 01:00:00.000000000 +0100 ++++ cracklib-2.9.6.new/po/kk.po 2018-10-09 11:39:13.394434486 +0200 +@@ -0,0 +1,79 @@ ++# Baurzhan Muftakhidinov , 2017. #zanata ++msgid "" ++msgstr "" ++"Project-Id-Version: cracklib 2.9.6\n" ++"Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" ++"POT-Creation-Date: 2015-08-18 13:45-0500\n" ++"PO-Revision-Date: 2017-04-11 12:05+0000\n" ++"Last-Translator: Baurzhan Muftakhidinov \n" ++"Language-Team: Kazakh\n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++"Language: kk\n" ++"Plural-Forms: nplurals=1; plural=0\n" ++"X-Generator: Zanata 4.6.2\n" ++ ++#: lib/fascist.c:516 ++msgid "it is based on your username" ++msgstr "ол сіздің пайдаланушы атыңызға негізделген" ++ ++#: lib/fascist.c:576 ++msgid "it is based upon your password entry" ++msgstr "" ++ ++#: lib/fascist.c:591 ++msgid "it is derived from your password entry" ++msgstr "" ++ ++#: lib/fascist.c:599 ++msgid "it's derived from your password entry" ++msgstr "" ++ ++#: lib/fascist.c:608 ++msgid "it is derivable from your password entry" ++msgstr "" ++ ++#: lib/fascist.c:617 ++msgid "it's derivable from your password entry" ++msgstr "" ++ ++#: lib/fascist.c:674 ++msgid "you are not registered in the password file" ++msgstr "" ++ ++#: lib/fascist.c:709 ++msgid "it is WAY too short" ++msgstr "ол ТЫМ қысқа" ++ ++#: lib/fascist.c:714 ++msgid "it is too short" ++msgstr "ол тым қысқа" ++ ++#: lib/fascist.c:731 ++msgid "it does not contain enough DIFFERENT characters" ++msgstr "" ++ ++#: lib/fascist.c:745 ++msgid "it is all whitespace" ++msgstr "" ++ ++#: lib/fascist.c:764 ++msgid "it is too simplistic/systematic" ++msgstr "" ++ ++#: lib/fascist.c:769 ++msgid "it looks like a National Insurance number." ++msgstr "" ++ ++#: lib/fascist.c:801 ++msgid "it is based on a dictionary word" ++msgstr "" ++ ++#: lib/fascist.c:820 ++msgid "it is based on a (reversed) dictionary word" ++msgstr "" ++ ++#: lib/fascist.c:865 ++msgid "error loading dictionary" ++msgstr "" +diff -urN cracklib-2.9.6.old/po/kn.po cracklib-2.9.6.new/po/kn.po +--- cracklib-2.9.6.old/po/kn.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/kn.po 2018-10-09 11:57:33.760928751 +0200 +@@ -1,83 +1,84 @@ + # translation of cracklib.po to Kannada + # Copyright (C) 2008 Free Software Foundation, Inc. + # This file is distributed under the same license as the PACKAGE package. +-# ++# + # Shankar Prasad , 2008. ++# Shankar Prasad , 2008, 2013. + msgid "" + msgstr "" +-"Project-Id-Version: cracklib\n" +-"Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" +-"POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2008-12-11 11:49+0530\n" ++"Project-Id-Version: PACKAGE VERSION\n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2013-08-06 14:45+0530\n" ++"PO-Revision-Date: 2013-10-28 02:15-0400\n" + "Last-Translator: Shankar Prasad \n" +-"Language-Team: Kannada \n" +-"Language: kn\n" ++"Language-Team: Kannada \n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: KBabel 1.11.4\n" +-"Plural-Forms: nplurals=2; plural=(n != 1);\n" ++"Language: kn\n" ++"Plural-Forms: nplurals=2; plural=(n != 1);\n" ++"X-Generator: Zanata 3.1.2\n" ++ ++#: ../lib/fascist.c:550 ++msgid "you are not registered in the password file" ++msgstr "ಗುಪ್ತಪದದ ಕಡತದಲ್ಲಿ ನಿಮ್ಮ ಹೆಸರು ನೋಂದಾಯಿಸಲ್ಪಟ್ಟಿಲ್ಲ" + +-#: lib/fascist.c:516 ++#: ../lib/fascist.c:564 + msgid "it is based on your username" + msgstr "ಇದು ನಿಮ್ಮ ಬಳಕೆದಾರಹೆಸರಿನ ಮೇಲೆ ಆಧರಿತವಾಗಿದೆ" + +-#: lib/fascist.c:576 ++#: ../lib/fascist.c:629 + msgid "it is based upon your password entry" + msgstr "ಇದು ನಿಮ್ಮ ಗುಪ್ತಪದ ನಮೂದಿನ ಮೇಲೆ ಆಧರಿತವಾಗಿದೆ" + +-#: lib/fascist.c:591 ++#: ../lib/fascist.c:649 + msgid "it is derived from your password entry" + msgstr "ಇದನ್ನು ನಿಮ್ಮ ಗುಪ್ತಪದ ನಮೂದಿನಿಂದ ತೆಗೆದುಕೊಳ್ಳಲಾಗಿದೆ" + +-#: lib/fascist.c:599 ++#: ../lib/fascist.c:662 + msgid "it's derived from your password entry" + msgstr "ಇದು ನಿಮ್ಮ ಗುಪ್ತಪದ ನಮೂದಿನಿಂದ ತೆಗೆದುಕೊಳ್ಳಲ್ಪಟ್ಟಿದೆ" + +-#: lib/fascist.c:608 ++#: ../lib/fascist.c:676 + msgid "it is derivable from your password entry" + msgstr "ಇದನ್ನು ನಿಮ್ಮ ಗುಪ್ತಪದ ನಮೂದಿನಿಂದ ತೆಗೆದುಕೊಳ್ಳಬಹುದಾಗಿದೆ" + +-#: lib/fascist.c:617 ++#: ../lib/fascist.c:690 + msgid "it's derivable from your password entry" + msgstr "ಇದನ್ನು ನಿಮ್ಮ ಗುಪ್ತಪದ ನಮೂದಿನಿಂದ ತೆಗೆದುಕೊಳ್ಳಬಹುದಾಗಿದೆ" + +-#: lib/fascist.c:674 +-msgid "you are not registered in the password file" +-msgstr "ಗುಪ್ತಪದದ ಕಡತದಲ್ಲಿ ನಿಮ್ಮ ಹೆಸರು ನೋಂದಾಯಿಸಲ್ಪಟ್ಟಿಲ್ಲ" +- +-#: lib/fascist.c:709 ++#: ../lib/fascist.c:726 + msgid "it is WAY too short" + msgstr "ಇದು ಅತ್ಯಂತ ಚಿಕ್ಕದಾಗಿದೆ" + +-#: lib/fascist.c:714 ++#: ../lib/fascist.c:731 + msgid "it is too short" + msgstr "ಇದು ಬಹಳ ಚಿಕ್ಕದಾಗಿದೆ" + +-#: lib/fascist.c:731 ++#: ../lib/fascist.c:748 + msgid "it does not contain enough DIFFERENT characters" + msgstr "ಇದು ವಿಭಿನ್ನವಾದ ಸಾಕಷ್ಟು ಅಕ್ಷರಗಳನ್ನು ಹೊಂದಿಲ್ಲ" + +-#: lib/fascist.c:745 ++#: ../lib/fascist.c:762 + msgid "it is all whitespace" + msgstr "ಇದು ಕೇವಲ ಖಾಲಿ ಜಾಗಗಳನ್ನು ಹೊಂದಿದೆ" + +-#: lib/fascist.c:764 ++#: ../lib/fascist.c:781 + msgid "it is too simplistic/systematic" + msgstr "ಇದು ಬಹಳ ಸರಳ/ಊಹಿಸಬಹುದಾಗಿದೆ" + +-#: lib/fascist.c:769 ++#: ../lib/fascist.c:786 + msgid "it looks like a National Insurance number." + msgstr "ಇದು ರಾಷ್ಟ್ರೀಯ ವಿಮೆ ಸಂಖ್ಯೆಯಂತೆ ಕಾಣಿಸುತ್ತಿದೆ" + +-#: lib/fascist.c:801 ++#: ../lib/fascist.c:813 + msgid "it is based on a dictionary word" + msgstr "ಇದು ಶಬ್ಧಕೋಶದಲ್ಲಿನ ಒಂದು ಪದದಂತಿದೆ" + +-#: lib/fascist.c:820 ++#: ../lib/fascist.c:832 + msgid "it is based on a (reversed) dictionary word" + msgstr "ಇದು ಶಬ್ಧಕೋಶದಲ್ಲಿನ ಒಂದು ಪದದಂತಿದೆ(ತಿರುಮುರುವು)" + +-#: lib/fascist.c:865 ++#: ../lib/fascist.c:867 + msgid "error loading dictionary" +-msgstr "" ++msgstr "ಕೋಶವನ್ನು ಲೋಡ್ ಮಾಡುವಲ್ಲಿ ದೋಷ" +diff -urN cracklib-2.9.6.old/po/ko.po cracklib-2.9.6.new/po/ko.po +--- cracklib-2.9.6.old/po/ko.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/ko.po 2018-10-09 11:39:16.328507645 +0200 +@@ -3,20 +3,22 @@ + # This file is distributed under the same license as the PACKAGE package. + # + # Eunju Kim , 2009. ++# Jan Dittberner , 2016. #zanata ++# Ludek Janda , 2018. #zanata + msgid "" + msgstr "" +-"Project-Id-Version: cracklib.default\n" ++"Project-Id-Version: cracklib 2.9.6\n" + "Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" + "POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2009-11-18 11:19+1000\n" +-"Last-Translator: Eunju Kim \n" ++"PO-Revision-Date: 2018-08-21 09:51+0000\n" ++"Last-Translator: Copied by Zanata \n" + "Language-Team: Korean \n" +-"Language: ko\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: KBabel 1.11.4\n" +-"Plural-Forms: nplurals=1; plural=0;\n" ++"Language: ko\n" ++"Plural-Forms: nplurals=1; plural=0;\n" ++"X-Generator: Zanata 4.6.2\n" + + #: lib/fascist.c:516 + msgid "it is based on your username" +@@ -80,4 +82,4 @@ + + #: lib/fascist.c:865 + msgid "error loading dictionary" +-msgstr "" ++msgstr "사전을 로드하는 도중 오류가 발생했습니다 " +diff -urN cracklib-2.9.6.old/po/LINGUAS cracklib-2.9.6.new/po/LINGUAS +--- cracklib-2.9.6.old/po/LINGUAS 1970-01-01 01:00:00.000000000 +0100 ++++ cracklib-2.9.6.new/po/LINGUAS 2018-10-09 12:14:53.147237727 +0200 +@@ -0,0 +1 @@ ++as be bn_IN ca cs da de el es eu fi fr gu he hi hu id it ja kk kn ko lt ml mr nb nl or pa pl pt_BR pt ru sk sl_SI sq sv ta te tr uk zh_CN zh_TW +diff -urN cracklib-2.9.6.old/po/lt.po cracklib-2.9.6.new/po/lt.po +--- cracklib-2.9.6.old/po/lt.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/lt.po 2018-10-09 11:38:04.314715706 +0200 +@@ -2,19 +2,21 @@ + # Copyright (C) YEAR Free Software Foundation, Inc. + # This file is distributed under the same license as the PACKAGE package. + # FIRST AUTHOR , YEAR. +-# ++# Jan Dittberner , 2016. #zanata + msgid "" + msgstr "" +-"Project-Id-Version: cracklib\n" ++"Project-Id-Version: cracklib 2.9.6\n" + "Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" + "POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2005-08-04 12:05+0200\n" +-"Last-Translator: Linas Spraunius \n" ++"PO-Revision-Date: 2016-06-18 01:02+0000\n" ++"Last-Translator: Copied by Zanata \n" + "Language-Team: lt\n" +-"Language: \n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" ++"Language: lt\n" ++"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)\n" ++"X-Generator: Zanata 4.6.2\n" + + #: lib/fascist.c:516 + msgid "it is based on your username" +diff -urN cracklib-2.9.6.old/po/ml.po cracklib-2.9.6.new/po/ml.po +--- cracklib-2.9.6.old/po/ml.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/ml.po 2018-10-09 11:57:33.760928751 +0200 +@@ -2,81 +2,82 @@ + # Copyright (C) 2009 Free Software Foundation, Inc. + # This file is distributed under the same license as the cracklib package. + # Ani Peter , 2009. +-# ++# apeter , 2013. #zanata + msgid "" + msgstr "" + "Project-Id-Version: cracklib\n" +-"Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" +-"POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2009-11-11 14:46+0530\n" +-"Last-Translator: Ani Peter \n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2012-12-14 16:11-0600\n" ++"PO-Revision-Date: 2013-10-28 08:56-0400\n" ++"Last-Translator: apeter \n" + "Language-Team: Malayalam\n" +-"Language: \n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: KBabel 1.11.4\n" ++"Language: ml\n" ++"X-Generator: Zanata 3.1.2\n" ++"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +-#: lib/fascist.c:516 ++#: ../lib/fascist.c:550 ++msgid "you are not registered in the password file" ++msgstr "നിങ്ങള്‍ രഹസ്യവാക്കിനുള്ള ഫയലില്‍ രജിസ്ടര്‍ ചെയ്തിട്ടില്ല" ++ ++#: ../lib/fascist.c:564 + msgid "it is based on your username" + msgstr "നിങ്ങളുടെ ഉപയോക്തൃനാമം അനുസരിച്ചാണു്" + +-#: lib/fascist.c:576 ++#: ../lib/fascist.c:629 + msgid "it is based upon your password entry" + msgstr "നിങ്ങളുടെ രഹസ്യവാക്കനുസരിച്ചാണു്" + +-#: lib/fascist.c:591 ++#: ../lib/fascist.c:649 + msgid "it is derived from your password entry" + msgstr "നിങ്ങളുടെ രഹസ്യവാക്കില്‍ നിന്നും ലഭ്യമാക്കുന്നു" + +-#: lib/fascist.c:599 ++#: ../lib/fascist.c:662 + msgid "it's derived from your password entry" + msgstr "നിങ്ങളുടെ രഹസ്യവാക്കില്‍ നിന്നും ലഭ്യമാക്കുന്നു" + +-#: lib/fascist.c:608 ++#: ../lib/fascist.c:676 + msgid "it is derivable from your password entry" + msgstr "നിങ്ങളുടെ രഹസ്യവാക്കില്‍ നിന്നും ലഭ്യമാക്കുവാന്‍ സാധിക്കുന്നു" + +-#: lib/fascist.c:617 ++#: ../lib/fascist.c:690 + msgid "it's derivable from your password entry" + msgstr "നിങ്ങളുടെ രഹസ്യവാക്കില്‍ നിന്നും ലഭ്യമാക്കുന്നു" + +-#: lib/fascist.c:674 +-msgid "you are not registered in the password file" +-msgstr "നിങ്ങള്‍ രഹസ്യവാക്കിനുള്ള ഫയലില്‍ രജിസ്ടര്‍ ചെയ്തിട്ടില്ല" +- +-#: lib/fascist.c:709 ++#: ../lib/fascist.c:726 + msgid "it is WAY too short" + msgstr "വളരെ ചെറുതാണു്" + +-#: lib/fascist.c:714 ++#: ../lib/fascist.c:731 + msgid "it is too short" + msgstr "വളരെ ചെറുതാണു്" + +-#: lib/fascist.c:731 ++#: ../lib/fascist.c:748 + msgid "it does not contain enough DIFFERENT characters" + msgstr "അനവധി തരത്തിലുള്ള അക്ഷരങ്ങള്‍ നല്‍കുക" + +-#: lib/fascist.c:745 ++#: ../lib/fascist.c:762 + msgid "it is all whitespace" + msgstr "എല്ലാം വൈറ്റ്സ്പെയിസാണു്" + +-#: lib/fascist.c:764 ++#: ../lib/fascist.c:781 + msgid "it is too simplistic/systematic" + msgstr "വളരെ ലളിതമാണു്" + +-#: lib/fascist.c:769 ++#: ../lib/fascist.c:786 + msgid "it looks like a National Insurance number." + msgstr "ഒരു നാഷണല്‍ ഇന്‍ഷുറന്‍സ് നംബര്‍ പോലുണ്ടു്." + +-#: lib/fascist.c:801 ++#: ../lib/fascist.c:813 + msgid "it is based on a dictionary word" + msgstr "നിഘണ്ടുവിലുള്ള ഒരു വാക്കിനെ അടിസ്ഥാനമാക്കിയുള്ളതാണു്" + +-#: lib/fascist.c:820 ++#: ../lib/fascist.c:832 + msgid "it is based on a (reversed) dictionary word" + msgstr "നിഘണ്ടുവിലുള്ള ഒരു വാക്കിനെ അടിസ്ഥാനമാക്കിയുള്ളതാണു്" + +-#: lib/fascist.c:865 ++#: ../lib/fascist.c:867 + msgid "error loading dictionary" +-msgstr "" ++msgstr "നിഘണ്ടു ലഭ്യമാക്കുന്നതില്‍ പിശക്" +diff -urN cracklib-2.9.6.old/po/mr.po cracklib-2.9.6.new/po/mr.po +--- cracklib-2.9.6.old/po/mr.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/mr.po 2018-10-09 11:57:33.761928776 +0200 +@@ -1,83 +1,84 @@ + # translation of cracklib.default.cracklib.po to Marathi + # Copyright (C) 2009 Free Software Foundation, Inc. + # This file is distributed under the same license as the PACKAGE package. +-# ++# + # Sandeep Shedmake , 2009. ++# Sandeep Shedmake , 2009, 2013. + msgid "" + msgstr "" +-"Project-Id-Version: cracklib.default.cracklib\n" +-"Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" +-"POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2009-11-11 12:24+0530\n" ++"Project-Id-Version: PACKAGE VERSION\n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2013-08-06 14:45+0530\n" ++"PO-Revision-Date: 2013-10-13 01:28-0400\n" + "Last-Translator: Sandeep Shedmake \n" + "Language-Team: Marathi \n" +-"Language: mr\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: KBabel 1.11.4\n" ++"Language: mr\n" + "Plural-Forms: nplurals=2; plural=(n!=1);\n" ++"X-Generator: Zanata 3.1.2\n" ++ ++#: ../lib/fascist.c:550 ++msgid "you are not registered in the password file" ++msgstr "तुम्ही पासवर्ड फाइलमध्ये नोंदणीकृत नाही" + +-#: lib/fascist.c:516 ++#: ../lib/fascist.c:564 + msgid "it is based on your username" + msgstr "तुमच्या वापरकर्तानावावर आधारीत आहे" + +-#: lib/fascist.c:576 ++#: ../lib/fascist.c:629 + msgid "it is based upon your password entry" + msgstr "तुमच्या पासवर्ड नोंदवर आधारीत आहे" + +-#: lib/fascist.c:591 ++#: ../lib/fascist.c:649 + msgid "it is derived from your password entry" + msgstr "तुमच्या पासवर्ड नोंद पासून प्राप्त आहे" + +-#: lib/fascist.c:599 ++#: ../lib/fascist.c:662 + msgid "it's derived from your password entry" + msgstr "तुमच्या पासवर्ड नोंद पासून प्राप्त" + +-#: lib/fascist.c:608 ++#: ../lib/fascist.c:676 + msgid "it is derivable from your password entry" + msgstr "तुमच्या पासवर्ड नोंद पासून प्राप्यजोगी आहे" + +-#: lib/fascist.c:617 ++#: ../lib/fascist.c:690 + msgid "it's derivable from your password entry" + msgstr "तुमच्या पासवर्ड नोंद पासून प्राप्यजोगी" + +-#: lib/fascist.c:674 +-msgid "you are not registered in the password file" +-msgstr "तुम्ही पासवर्ड फाइलमध्ये नोंदणीकृत नाही" +- +-#: lib/fascist.c:709 ++#: ../lib/fascist.c:726 + msgid "it is WAY too short" + msgstr "खूपच लहान" + +-#: lib/fascist.c:714 ++#: ../lib/fascist.c:731 + msgid "it is too short" + msgstr "खूप लहान आहे" + +-#: lib/fascist.c:731 ++#: ../lib/fascist.c:748 + msgid "it does not contain enough DIFFERENT characters" + msgstr "अतिरीक्त वेगळे अक्षर समाविष्टीत नाही" + +-#: lib/fascist.c:745 ++#: ../lib/fascist.c:762 + msgid "it is all whitespace" + msgstr "सर्वत्र वाईटस्पेस् आहे" + +-#: lib/fascist.c:764 ++#: ../lib/fascist.c:781 + msgid "it is too simplistic/systematic" + msgstr "खूपच सोपे/पद्धतशीर आहे" + +-#: lib/fascist.c:769 ++#: ../lib/fascist.c:786 + msgid "it looks like a National Insurance number." + msgstr "राष्ट्रीय इन्शॉरन्स् क्रमांक प्रमाणे आढळते." + +-#: lib/fascist.c:801 ++#: ../lib/fascist.c:813 + msgid "it is based on a dictionary word" + msgstr "शब्दकोषमधील शब्दावर आधारीत आहे" + +-#: lib/fascist.c:820 ++#: ../lib/fascist.c:832 + msgid "it is based on a (reversed) dictionary word" + msgstr "(उलटे) शब्दकोषमधील शब्दावर आधारीत आहे" + +-#: lib/fascist.c:865 ++#: ../lib/fascist.c:867 + msgid "error loading dictionary" +-msgstr "" ++msgstr "शब्दकोष लोड करतेवेळी त्रुटी" +diff -urN cracklib-2.9.6.old/po/nb.po cracklib-2.9.6.new/po/nb.po +--- cracklib-2.9.6.old/po/nb.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/nb.po 2018-10-09 11:38:53.611941207 +0200 +@@ -2,20 +2,21 @@ + # Copyright (C) 2005 Free Software Foundation, Inc. + # This file is distributed under the same license as the PACKAGE package. + # Olav Pettershagen , 2005. +-# ++# Jan Dittberner , 2016. #zanata + msgid "" + msgstr "" +-"Project-Id-Version: nb\n" ++"Project-Id-Version: cracklib 2.9.6\n" + "Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" + "POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2005-08-11 20:48+0200\n" +-"Last-Translator: Olav Pettershagen \n" +-"Language-Team: \n" +-"Language: \n" ++"PO-Revision-Date: 2016-06-18 01:02+0000\n" ++"Last-Translator: Copied by Zanata \n" ++"Language-Team: \n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: KBabel 1.10.2\n" ++"Language: nb\n" ++"Plural-Forms: nplurals=2; plural=(n != 1)\n" ++"X-Generator: Zanata 4.6.2\n" + + #: lib/fascist.c:516 + msgid "it is based on your username" +diff -urN cracklib-2.9.6.old/po/nl.po cracklib-2.9.6.new/po/nl.po +--- cracklib-2.9.6.old/po/nl.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/nl.po 2018-10-09 11:38:51.650892308 +0200 +@@ -4,21 +4,22 @@ + # This file is put in the public domain. + # Arthur & Ettie Kerkmeester , 2003. + # Rinse de Vries , 2005. +-# ++# Geert Warrink , 2016. #zanata ++# Jan Dittberner , 2016. #zanata + msgid "" + msgstr "" +-"Project-Id-Version: nl\n" ++"Project-Id-Version: cracklib 2.9.6\n" + "Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" + "POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2005-08-14 05:41+0200\n" +-"Last-Translator: Rinse de Vries \n" ++"PO-Revision-Date: 2016-09-01 06:35+0000\n" ++"Last-Translator: Geert Warrink \n" + "Language-Team: Dutch \n" +-"Language: nl\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: KBabel 1.10.2\n" +-"Plural-Forms: nplurals=2; plural=(n != 1);\n" ++"Language: nl\n" ++"Plural-Forms: nplurals=2; plural=(n != 1);\n" ++"X-Generator: Zanata 4.6.2\n" + + #: lib/fascist.c:516 + msgid "it is based on your username" +@@ -82,4 +83,4 @@ + + #: lib/fascist.c:865 + msgid "error loading dictionary" +-msgstr "" ++msgstr "fout bij laden woordenboek" +diff -urN cracklib-2.9.6.old/po/or.po cracklib-2.9.6.new/po/or.po +--- cracklib-2.9.6.old/po/or.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/or.po 2018-10-09 11:57:33.761928776 +0200 +@@ -1,84 +1,85 @@ + # translation of cracklib.default.cracklib.or.po to Oriya + # Copyright (C) 2009 Free Software Foundation, Inc. + # This file is distributed under the same license as the PACKAGE package. +-# ++# + # Manoj Kumar Giri , 2009. ++# mgiri , 2013. #zanata + msgid "" + msgstr "" + "Project-Id-Version: cracklib.default.cracklib.or\n" +-"Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" +-"POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2009-11-12 13:02+0530\n" +-"Last-Translator: Manoj Kumar Giri \n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2012-12-14 16:11-0600\n" ++"PO-Revision-Date: 2013-10-22 06:40-0400\n" ++"Last-Translator: mgiri \n" + "Language-Team: Oriya \n" +-"Language: or\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: KBabel 1.11.4\n" +-"Plural-Forms: nplurals=2; plural=(n!=1);\n" ++"Language: or\n" ++"Plural-Forms: nplurals=2; plural=(n!=1);\n" + "\n" ++"X-Generator: Zanata 3.1.2\n" ++ ++#: ../lib/fascist.c:550 ++msgid "you are not registered in the password file" ++msgstr "ପ୍ରବେଶ ସଂକେତ ଫାଇଲରେ ଆପଣ ପଞ୍ଜିକୃତ ହୋଇନାହାନ୍ତି" + +-#: lib/fascist.c:516 ++#: ../lib/fascist.c:564 + msgid "it is based on your username" + msgstr "ଏହା ଆପଣଙ୍କର ଚାଳକନାମ ଉପରେ ଆଧାରିତ" + +-#: lib/fascist.c:576 ++#: ../lib/fascist.c:629 + msgid "it is based upon your password entry" + msgstr "ଏହା ଆପଣଙ୍କର ପ୍ରବେଶ ସଂକେତ ଭରଣ ଉପରେ ଆଧାରିତ" + +-#: lib/fascist.c:591 ++#: ../lib/fascist.c:649 + msgid "it is derived from your password entry" + msgstr "ଏହା ଆପଣଙ୍କର ପ୍ରବେଶ ସଂକେତ ଭରଣରୁ ଉତ୍ପନ୍ନ କରାହୋଇଥାଏ" + +-#: lib/fascist.c:599 ++#: ../lib/fascist.c:662 + msgid "it's derived from your password entry" + msgstr "ଏହା ଆପଣଙ୍କର ପ୍ରବେଶ ସଂକେତ ଭରଣରୁ ଉତ୍ପନ୍ନ କରାହୋଇଥାଏ" + +-#: lib/fascist.c:608 ++#: ../lib/fascist.c:676 + msgid "it is derivable from your password entry" + msgstr "ଏହା ଆପଣଙ୍କର ପ୍ରବେଶ ସଂକେତ ଭରଣରୁ ଉତ୍ପନ୍ନ କରିବା ଯୋଗ୍ୟ" + +-#: lib/fascist.c:617 ++#: ../lib/fascist.c:690 + msgid "it's derivable from your password entry" + msgstr "ଏହା ଆପଣଙ୍କର ପ୍ରବେଶ ସଂକେତ ଭରଣରୁ ଉତ୍ପନ୍ନ କରିବା ଯୋଗ୍ୟ" + +-#: lib/fascist.c:674 +-msgid "you are not registered in the password file" +-msgstr "ପ୍ରବେଶ ସଂକେତ ଫାଇଲରେ ଆପଣ ପଞ୍ଜିକୃତ ହୋଇନାହାନ୍ତି" +- +-#: lib/fascist.c:709 ++#: ../lib/fascist.c:726 + msgid "it is WAY too short" + msgstr "ଏହା ଅତ୍ୟଧିକ ଛୋଟ ଅଟେ" + +-#: lib/fascist.c:714 ++#: ../lib/fascist.c:731 + msgid "it is too short" + msgstr "ଏହା ଅତ୍ୟଧିକ ଛୋଟ ଅଟେ" + +-#: lib/fascist.c:731 ++#: ../lib/fascist.c:748 + msgid "it does not contain enough DIFFERENT characters" + msgstr "ଏହା ଯଥେଷ୍ଟ ଭିନ୍ନ ବର୍ଣ୍ଣ ଧାରଣ କରିନଥାଏ" + +-#: lib/fascist.c:745 ++#: ../lib/fascist.c:762 + msgid "it is all whitespace" + msgstr "ଏହା କେବଳ ଖାଲିସ୍ଥାନ ଅଟେ" + +-#: lib/fascist.c:764 ++#: ../lib/fascist.c:781 + msgid "it is too simplistic/systematic" + msgstr "ଏହା ଅତ୍ୟଧିକ ସରଳ/ନିୟମାନୁବର୍ତ୍ତୀ" + +-#: lib/fascist.c:769 ++#: ../lib/fascist.c:786 + msgid "it looks like a National Insurance number." + msgstr "ଏହା ଗୋଟିଏ ଜାତୀୟ ବୀମା ସଂଖ୍ୟା ପରି ଦେଖାଯାଉଛି।" + +-#: lib/fascist.c:801 ++#: ../lib/fascist.c:813 + msgid "it is based on a dictionary word" + msgstr "ଏହା ଅଭିଧାନ ଶବ୍ଦ ଉପରେ ଆଧାରିତ" + +-#: lib/fascist.c:820 ++#: ../lib/fascist.c:832 + msgid "it is based on a (reversed) dictionary word" + msgstr "ଏହା ଗୋଟିଏ (ଓଲଟା) ଅଭିଧାନ ଶବ୍ଦ ଉପରେ ଆଧାରିତ" + +-#: lib/fascist.c:865 ++#: ../lib/fascist.c:867 + msgid "error loading dictionary" +-msgstr "" ++msgstr "ଅଭିଧାନ ଧାରଣ କରିବାରେ ତ୍ରୁଟି" +diff -urN cracklib-2.9.6.old/po/pa.po cracklib-2.9.6.new/po/pa.po +--- cracklib-2.9.6.old/po/pa.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/pa.po 2018-10-09 11:38:05.301740041 +0200 +@@ -5,24 +5,26 @@ + # + # Amanpreet Singh Alam[ਆਲਮ] , 2005, 2009. + # A S Alam , 2009. ++# Jan Dittberner , 2016. #zanata ++# A S Alam , 2017. #zanata + msgid "" + msgstr "" +-"Project-Id-Version: cracklib.pa\n" ++"Project-Id-Version: cracklib 2.9.6\n" + "Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" + "POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2009-11-17 05:52+0530\n" +-"Last-Translator: A S Alam \n" ++"PO-Revision-Date: 2017-08-18 07:15+0000\n" ++"Last-Translator: A S Alam \n" + "Language-Team: Punjabi/Panjabi \n" +-"Language: \n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: Lokalize 1.0\n" ++"Language: pa\n" + "Plural-Forms: nplurals=2; plural=(n != 1);\n" ++"X-Generator: Zanata 4.6.2\n" + + #: lib/fascist.c:516 + msgid "it is based on your username" +-msgstr "ਇਹ ਤੁਹਾਡੇ ਯੂਜ਼ਰ-ਨਾਂ ਮੁਤਾਬਿਕ ਨਹੀਂ ਹੈ" ++msgstr "ਇਹ ਤੁਹਾਡੇ ਵਰਤੋਂਕਾਰ-ਨਾਂ ਮੁਤਾਬਕ ਹੈ" + + #: lib/fascist.c:576 + msgid "it is based upon your password entry" +@@ -50,7 +52,7 @@ + + #: lib/fascist.c:709 + msgid "it is WAY too short" +-msgstr "ਇਹ ਬਹੁਤ ਹੀ ਛੋਟਾ ਢੰਗ ਹੈ" ++msgstr "ਇਹ ਬਹੁਤ ਹੀ ਛੋਟਾ ਹੈ" + + #: lib/fascist.c:714 + msgid "it is too short" +@@ -70,7 +72,7 @@ + + #: lib/fascist.c:769 + msgid "it looks like a National Insurance number." +-msgstr "ਇਹ ਰਾਸ਼ਟਰੀ ਸੁਰੱਖਿਆ ਨੰਬਰ ਵਰਗਾ ਜਾਪਦਾ ਹੈ।" ++msgstr "ਇਹ ਨੈਸ਼ਨਲ ਇਨਸ਼ੋਅਰੈਂਸ ਨੰਬਰ ਵਰਗਾ ਜਾਪਦਾ ਹੈ।" + + #: lib/fascist.c:801 + msgid "it is based on a dictionary word" +@@ -78,8 +80,8 @@ + + #: lib/fascist.c:820 + msgid "it is based on a (reversed) dictionary word" +-msgstr "ਇਹ (ਉਲਟੇ) ਡਿਕਸ਼ਨਰੀ ਸ਼ਬਦ ਉੱਤੇ ਅਧਾਰਿਤ ਹੈ" ++msgstr "ਇਹ (ਉਲਟ) ਡਿਕਸ਼ਨਰੀ ਸ਼ਬਦ ਉੱਤੇ ਅਧਾਰਿਤ ਹੈ" + + #: lib/fascist.c:865 + msgid "error loading dictionary" +-msgstr "" ++msgstr "ਡਿਕਸ਼ਨਰੀ ਲੋਡ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ" +diff -urN cracklib-2.9.6.old/po/pl.po cracklib-2.9.6.new/po/pl.po +--- cracklib-2.9.6.old/po/pl.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/pl.po 2018-10-09 11:38:10.401865781 +0200 +@@ -1,19 +1,22 @@ + # translation of pl.po to Polish + # Piotr Bolek , 2005. + # Piotr Drąg , 2009. +-# ++# Jan Dittberner , 2016. #zanata ++# Piotr Drąg , 2016. #zanata + msgid "" + msgstr "" +-"Project-Id-Version: pl\n" ++"Project-Id-Version: cracklib 2.9.6\n" + "Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" + "POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2009-10-12 15:57+0200\n" ++"PO-Revision-Date: 2016-08-31 09:50+0000\n" + "Last-Translator: Piotr Drąg \n" + "Language-Team: Polish \n" +-"Language: pl\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" ++"Language: pl\n" ++"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" ++"X-Generator: Zanata 4.6.2\n" + + #: lib/fascist.c:516 + msgid "it is based on your username" +@@ -21,27 +24,27 @@ + + #: lib/fascist.c:576 + msgid "it is based upon your password entry" +-msgstr "oparte na wpisie w pliku passwd" ++msgstr "oparte na wpisie w pliku passwd" + + #: lib/fascist.c:591 + msgid "it is derived from your password entry" +-msgstr "pochodzi od wpisu w pliku passwd" ++msgstr "pochodzi od wpisu w pliku passwd" + + #: lib/fascist.c:599 + msgid "it's derived from your password entry" +-msgstr "pochodzi od wpisu w pliku passwd" ++msgstr "pochodzi od wpisu w pliku passwd" + + #: lib/fascist.c:608 + msgid "it is derivable from your password entry" +-msgstr "da się odtworzyć z wpisu w pliku passwd" ++msgstr "da się odtworzyć z wpisu w pliku passwd" + + #: lib/fascist.c:617 + msgid "it's derivable from your password entry" +-msgstr "da się odtworzyć z wpisu w pliku passwd" ++msgstr "da się odtworzyć z wpisu w pliku passwd" + + #: lib/fascist.c:674 + msgid "you are not registered in the password file" +-msgstr "nie zarejestrowano w pliku passwd" ++msgstr "nie zarejestrowano w pliku passwd" + + #: lib/fascist.c:709 + msgid "it is WAY too short" +@@ -77,4 +80,4 @@ + + #: lib/fascist.c:865 + msgid "error loading dictionary" +-msgstr "" ++msgstr "błąd podczas wczytywania słownika" +diff -urN cracklib-2.9.6.old/po/pt_BR.po cracklib-2.9.6.new/po/pt_BR.po +--- cracklib-2.9.6.old/po/pt_BR.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/pt_BR.po 2018-10-09 11:38:18.293060531 +0200 +@@ -2,19 +2,21 @@ + # Copyright (C) YEAR Free Software Foundation, Inc. + # This file is distributed under the same license as the PACKAGE package. + # FIRST AUTHOR , YEAR. +-# ++# Daniel Lara , 2016. #zanata + msgid "" + msgstr "" +-"Project-Id-Version: cracklib\n" ++"Project-Id-Version: cracklib 2.9.6\n" + "Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" + "POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2005-08-18 15:02+0000\n" +-"Last-Translator: Novell Language \n" ++"PO-Revision-Date: 2018-08-16 12:44+0000\n" ++"Last-Translator: Copied by Zanata \n" + "Language-Team: Novell Language \n" +-"Language: \n" + "MIME-Version: 1.0\n" +-"Content-Type: text/plain; charset=utf-8\n" ++"Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" ++"Language: pt_BR\n" ++"Plural-Forms: nplurals=2; plural=(n != 1)\n" ++"X-Generator: Zanata 4.6.2\n" + + #: lib/fascist.c:516 + msgid "it is based on your username" +@@ -78,4 +80,4 @@ + + #: lib/fascist.c:865 + msgid "error loading dictionary" +-msgstr "" ++msgstr "erro ao carregar dicionário" +diff -urN cracklib-2.9.6.old/po/pt.po cracklib-2.9.6.new/po/pt.po +--- cracklib-2.9.6.old/po/pt.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/pt.po 2018-10-09 11:37:57.475547088 +0200 +@@ -2,20 +2,22 @@ + # Copyright (C) 2005 Free Software Foundation, Inc. + # This file is distributed under the same license as the PACKAGE package. + # Antonio Cardoso Martins , 2005. +-# ++# Jan Dittberner , 2016. #zanata ++# Ricardo Pinto , 2016. #zanata + msgid "" + msgstr "" +-"Project-Id-Version: cracklib.pt\n" ++"Project-Id-Version: cracklib 2.9.6\n" + "Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" + "POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2005-08-05 00:45+0100\n" +-"Last-Translator: Antonio Cardoso Martins \n" ++"PO-Revision-Date: 2016-09-05 10:12+0000\n" ++"Last-Translator: Ricardo Pinto \n" + "Language-Team: portuguese\n" +-"Language: \n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: KBabel 1.10\n" ++"Language: pt\n" ++"Plural-Forms: nplurals=2; plural=(n != 1)\n" ++"X-Generator: Zanata 4.6.2\n" + + #: lib/fascist.c:516 + msgid "it is based on your username" +@@ -79,4 +81,4 @@ + + #: lib/fascist.c:865 + msgid "error loading dictionary" +-msgstr "" ++msgstr "erro ao carregar o dicionário" +diff -urN cracklib-2.9.6.old/po/ru.po cracklib-2.9.6.new/po/ru.po +--- cracklib-2.9.6.old/po/ru.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/ru.po 2018-10-09 11:38:50.654867472 +0200 +@@ -4,45 +4,46 @@ + # + # Anton Dobkin , 2008. + # Yulia Poyarko , 2009. ++# Igor Gorbounov , 2016. #zanata ++# Jan Dittberner , 2016. #zanata + msgid "" + msgstr "" +-"Project-Id-Version: cracklib\n" ++"Project-Id-Version: cracklib 2.9.6\n" + "Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" + "POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2009-12-03 10:17+1100\n" +-"Last-Translator: Yulia \n" ++"PO-Revision-Date: 2018-08-16 12:43+0000\n" ++"Last-Translator: Copied by Zanata \n" + "Language-Team: \n" +-"Language: \n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: KBabel 1.11.4\n" +-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" ++"Language: ru\n" ++"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" ++"X-Generator: Zanata 4.6.2\n" + + #: lib/fascist.c:516 + msgid "it is based on your username" +-msgstr "основан на вашем имени пользователя" ++msgstr "на основе вашего имени пользователя" + + #: lib/fascist.c:576 + msgid "it is based upon your password entry" +-msgstr "основан на вашем входном пароле" ++msgstr "на основе введенного вами пароля" + + #: lib/fascist.c:591 + msgid "it is derived from your password entry" +-msgstr "получен из вашего входного пароля" ++msgstr "получен из введенного вами пароля" + + #: lib/fascist.c:599 + msgid "it's derived from your password entry" +-msgstr "получен из вашего входного пароля" ++msgstr "получен из введенного вами пароля" + + #: lib/fascist.c:608 + msgid "it is derivable from your password entry" +-msgstr "получен из вашего входного пароля" ++msgstr "получается из введенного вами пароля" + + #: lib/fascist.c:617 + msgid "it's derivable from your password entry" +-msgstr "получен из вашего входного пароля" ++msgstr "получается из введенного вами пароля" + + #: lib/fascist.c:674 + msgid "you are not registered in the password file" +@@ -54,11 +55,11 @@ + + #: lib/fascist.c:714 + msgid "it is too short" +-msgstr "короткий" ++msgstr "слишком короткий" + + #: lib/fascist.c:731 + msgid "it does not contain enough DIFFERENT characters" +-msgstr "не содержит достаточное число РАЗЛИЧНЫХ символов" ++msgstr "не содержит достаточного числа РАЗЛИЧНЫХ символов" + + #: lib/fascist.c:745 + msgid "it is all whitespace" +@@ -70,16 +71,16 @@ + + #: lib/fascist.c:769 + msgid "it looks like a National Insurance number." +-msgstr "похож на число государственного страхования." ++msgstr "похож на номер государственного страхования." + + #: lib/fascist.c:801 + msgid "it is based on a dictionary word" +-msgstr "основан на слове из словаря" ++msgstr "на основе слова из словаря" + + #: lib/fascist.c:820 + msgid "it is based on a (reversed) dictionary word" +-msgstr "основан на измененном слове из словаря" ++msgstr "на основе (перевернутого) слова из словаря" + + #: lib/fascist.c:865 + msgid "error loading dictionary" +-msgstr "" ++msgstr "ошибка при загрузке словаря" +diff -urN cracklib-2.9.6.old/po/sk.po cracklib-2.9.6.new/po/sk.po +--- cracklib-2.9.6.old/po/sk.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/sk.po 2018-10-09 11:39:19.259580732 +0200 +@@ -1,20 +1,22 @@ + # translation of cracklib.po to Slovak + # This file is put in the public domain. + # Stanislav Visnovsky , 2003. +-# ++# Jan Dittberner , 2016. #zanata ++# feonsu , 2016. #zanata + msgid "" + msgstr "" +-"Project-Id-Version: cracklib\n" ++"Project-Id-Version: cracklib 2.9.6\n" + "Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" + "POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2005-06-23 13:12+02:00\n" +-"Last-Translator: Stanislav Visnovsky \n" ++"PO-Revision-Date: 2016-10-11 06:53+0000\n" ++"Last-Translator: feonsu \n" + "Language-Team: Slovak \n" +-"Language: sk\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: KBabel 1.2beta3\n" ++"Language: sk\n" ++"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" ++"X-Generator: Zanata 4.6.2\n" + + #: lib/fascist.c:516 + msgid "it is based on your username" +@@ -78,4 +80,4 @@ + + #: lib/fascist.c:865 + msgid "error loading dictionary" +-msgstr "" ++msgstr "chyba pri načítavaní slovníka" +diff -urN cracklib-2.9.6.old/po/sq.po cracklib-2.9.6.new/po/sq.po +--- cracklib-2.9.6.old/po/sq.po 1970-01-01 01:00:00.000000000 +0100 ++++ cracklib-2.9.6.new/po/sq.po 2018-10-09 11:39:15.354483358 +0200 +@@ -0,0 +1,79 @@ ++# Jona Azizaj , 2017. #zanata ++msgid "" ++msgstr "" ++"Project-Id-Version: cracklib 2.9.6\n" ++"Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" ++"POT-Creation-Date: 2015-08-18 13:45-0500\n" ++"PO-Revision-Date: 2017-04-17 10:20+0000\n" ++"Last-Translator: Anxhela Hyseni \n" ++"Language-Team: Albanian\n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++"Language: sq\n" ++"Plural-Forms: nplurals=2; plural=(n != 1)\n" ++"X-Generator: Zanata 4.6.2\n" ++ ++#: lib/fascist.c:516 ++msgid "it is based on your username" ++msgstr "kjo është bazuar në emrin e përdoruesit tuaj" ++ ++#: lib/fascist.c:576 ++msgid "it is based upon your password entry" ++msgstr "kjo është bazuar në fjalëkalimin që ju keni dhënë" ++ ++#: lib/fascist.c:591 ++msgid "it is derived from your password entry" ++msgstr "kjo është përftuar nga fjalëkalimi që ju keni dhënë" ++ ++#: lib/fascist.c:599 ++msgid "it's derived from your password entry" ++msgstr "kjo është përftuar nga fjalëkalimi që ju keni dhënë" ++ ++#: lib/fascist.c:608 ++msgid "it is derivable from your password entry" ++msgstr "kjo u përfitua nga fjalëkalimi që ju keni dhënë" ++ ++#: lib/fascist.c:617 ++msgid "it's derivable from your password entry" ++msgstr "kjo u përfitua nga fjalëkalimi që ju keni dhënë" ++ ++#: lib/fascist.c:674 ++msgid "you are not registered in the password file" ++msgstr "ju nuk jeni regjistruar në skedarin e fjalëkalimit" ++ ++#: lib/fascist.c:709 ++msgid "it is WAY too short" ++msgstr "kjo është JASHTËZAKONISHT shumë e shkurtër" ++ ++#: lib/fascist.c:714 ++msgid "it is too short" ++msgstr "kjo është shumë e shkurtër" ++ ++#: lib/fascist.c:731 ++msgid "it does not contain enough DIFFERENT characters" ++msgstr "nuk përmban mjaftueshëm karaktere të NDRYSHME" ++ ++#: lib/fascist.c:745 ++msgid "it is all whitespace" ++msgstr "është e gjitha hapësirë e bardhë" ++ ++#: lib/fascist.c:764 ++msgid "it is too simplistic/systematic" ++msgstr "është shumë i thjeshtë/ sistematik" ++ ++#: lib/fascist.c:769 ++msgid "it looks like a National Insurance number." ++msgstr "ngjan sikur është numër Sigurimi Kombëtar." ++ ++#: lib/fascist.c:801 ++msgid "it is based on a dictionary word" ++msgstr "është bazuar në një fjalë në fjalor" ++ ++#: lib/fascist.c:820 ++msgid "it is based on a (reversed) dictionary word" ++msgstr "është bazuar në një fjalë (mbrapsht) në fjalor" ++ ++#: lib/fascist.c:865 ++msgid "error loading dictionary" ++msgstr "gabim në ngarkimin e fjalorit" +diff -urN cracklib-2.9.6.old/po/sv.po cracklib-2.9.6.new/po/sv.po +--- cracklib-2.9.6.old/po/sv.po 1970-01-01 01:00:00.000000000 +0100 ++++ cracklib-2.9.6.new/po/sv.po 2018-10-09 11:39:17.304531983 +0200 +@@ -0,0 +1,79 @@ ++# Göran Uddeborg , 2017. #zanata ++msgid "" ++msgstr "" ++"Project-Id-Version: cracklib 2.9.6\n" ++"Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" ++"POT-Creation-Date: 2015-08-18 13:45-0500\n" ++"PO-Revision-Date: 2017-03-29 03:16+0000\n" ++"Last-Translator: Göran Uddeborg \n" ++"Language-Team: Swedish\n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++"Language: sv\n" ++"Plural-Forms: nplurals=2; plural=(n != 1)\n" ++"X-Generator: Zanata 4.6.2\n" ++ ++#: lib/fascist.c:516 ++msgid "it is based on your username" ++msgstr "det är baserat på ditt användarnamn" ++ ++#: lib/fascist.c:576 ++msgid "it is based upon your password entry" ++msgstr "det är baserat på din lösenordspost" ++ ++#: lib/fascist.c:591 ++msgid "it is derived from your password entry" ++msgstr "det är härlett från din lösenordspost" ++ ++#: lib/fascist.c:599 ++msgid "it's derived from your password entry" ++msgstr "det är härlett från din lösenordspost" ++ ++#: lib/fascist.c:608 ++msgid "it is derivable from your password entry" ++msgstr "det är härledbart från din lösenordspost" ++ ++#: lib/fascist.c:617 ++msgid "it's derivable from your password entry" ++msgstr "det är härledbart från din lösenordspost" ++ ++#: lib/fascist.c:674 ++msgid "you are not registered in the password file" ++msgstr "du är inte registrerad i lösenordsfilen" ++ ++#: lib/fascist.c:709 ++msgid "it is WAY too short" ++msgstr "det är ALLDELES för kort" ++ ++#: lib/fascist.c:714 ++msgid "it is too short" ++msgstr "det är för kort" ++ ++#: lib/fascist.c:731 ++msgid "it does not contain enough DIFFERENT characters" ++msgstr "det innehåller inte tillräckligt med OLIKA tecken" ++ ++#: lib/fascist.c:745 ++msgid "it is all whitespace" ++msgstr "det är bara blanktecken" ++ ++#: lib/fascist.c:764 ++msgid "it is too simplistic/systematic" ++msgstr "det är för simplistiskt/systematiskt" ++ ++#: lib/fascist.c:769 ++msgid "it looks like a National Insurance number." ++msgstr "det ser ut som ett personnummer" ++ ++#: lib/fascist.c:801 ++msgid "it is based on a dictionary word" ++msgstr "det är baserat på ett ord ur ordlistan" ++ ++#: lib/fascist.c:820 ++msgid "it is based on a (reversed) dictionary word" ++msgstr "det är baserat på ett (omvänt) ord ur ordlistan" ++ ++#: lib/fascist.c:865 ++msgid "error loading dictionary" ++msgstr "fel när ordlistan lästes in" +diff -urN cracklib-2.9.6.old/po/ta.po cracklib-2.9.6.new/po/ta.po +--- cracklib-2.9.6.old/po/ta.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/ta.po 2018-10-09 11:57:33.761928776 +0200 +@@ -1,83 +1,84 @@ + # translation of cracklib.default.cracklib.po to Tamil + # Copyright (C) 2009 Free Software Foundation, Inc. + # This file is distributed under the same license as the PACKAGE package. +-# ++# + # I. Felix , 2009. ++# shkumar , 2013. #zanata + msgid "" + msgstr "" + "Project-Id-Version: cracklib.default.cracklib\n" +-"Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" +-"POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2009-11-11 14:21+0530\n" +-"Last-Translator: I. Felix \n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2012-12-14 16:11-0600\n" ++"PO-Revision-Date: 2013-11-11 09:51-0500\n" ++"Last-Translator: shkumar \n" + "Language-Team: Tamil \n" +-"Language: ta\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: KBabel 1.11.4\n" ++"Language: ta\n" + "Plural-Forms: nplurals=2; plural=(n!=1);\\n\n" ++"X-Generator: Zanata 3.1.2\n" ++ ++#: ../lib/fascist.c:550 ++msgid "you are not registered in the password file" ++msgstr "நீங்கள் கடவுச்சொல் கோப்பில் பதிவு செய்யவில்லை" + +-#: lib/fascist.c:516 ++#: ../lib/fascist.c:564 + msgid "it is based on your username" + msgstr "இது உங்கள் பயனர்பெயர் அடிப்படையில் உள்ளது" + +-#: lib/fascist.c:576 ++#: ../lib/fascist.c:629 + msgid "it is based upon your password entry" + msgstr "இது உங்கள் கடவுச்சொல் உள்ளீடு படி உள்ளது" + +-#: lib/fascist.c:591 ++#: ../lib/fascist.c:649 + msgid "it is derived from your password entry" + msgstr "இது உங்கள் கடவுச்சொல் உள்ளீடிலிருந்து வரையறுக்கப்பட்டது" + +-#: lib/fascist.c:599 ++#: ../lib/fascist.c:662 + msgid "it's derived from your password entry" + msgstr "இது உங்கள் கடவுச்சொல் உள்ளீடிலிருந்து வரையறுக்கப்பட்டது" + +-#: lib/fascist.c:608 ++#: ../lib/fascist.c:676 + msgid "it is derivable from your password entry" + msgstr "இது உங்கள் கடவுச்சொல் உள்ளீடிலிருந்து வரையறுக்கப்படக்கூடியது" + +-#: lib/fascist.c:617 ++#: ../lib/fascist.c:690 + msgid "it's derivable from your password entry" + msgstr "இது உங்கள் கடவுச்சொல் உள்ளீடிலிருந்து வரையறுக்கப்படக்கூடியது" + +-#: lib/fascist.c:674 +-msgid "you are not registered in the password file" +-msgstr "நீங்கள் கடவுச்சொல் கோப்பில் பதிவு செய்யவில்லை" +- +-#: lib/fascist.c:709 ++#: ../lib/fascist.c:726 + msgid "it is WAY too short" + msgstr "இது மிகவும் சிறியது" + +-#: lib/fascist.c:714 ++#: ../lib/fascist.c:731 + msgid "it is too short" + msgstr "இது மிகவும் சிறியது" + +-#: lib/fascist.c:731 ++#: ../lib/fascist.c:748 + msgid "it does not contain enough DIFFERENT characters" + msgstr "இது போதிய வேறுபாடு எழுத்துக்களை கொண்டிருக்கவில்லை" + +-#: lib/fascist.c:745 ++#: ../lib/fascist.c:762 + msgid "it is all whitespace" + msgstr "இது எல்லாம் காலிஇடங்கள்" + +-#: lib/fascist.c:764 ++#: ../lib/fascist.c:781 + msgid "it is too simplistic/systematic" + msgstr "இது மிகவும் எளியது/அமைப்பானது" + +-#: lib/fascist.c:769 ++#: ../lib/fascist.c:786 + msgid "it looks like a National Insurance number." + msgstr "இது ஒரு தேசிய காப்பீடு எண் போலுள்ளது." + +-#: lib/fascist.c:801 ++#: ../lib/fascist.c:813 + msgid "it is based on a dictionary word" + msgstr "இது ஒரு அகராதி சொல்லை அடிப்படையாக கொண்டது" + +-#: lib/fascist.c:820 ++#: ../lib/fascist.c:832 + msgid "it is based on a (reversed) dictionary word" + msgstr "இது ஒரு (தலைகீழானது) அகராதி சொல்லை அடிப்படையாக கொண்டது" + +-#: lib/fascist.c:865 ++#: ../lib/fascist.c:867 + msgid "error loading dictionary" +-msgstr "" ++msgstr "அகராதியை ஏற்றுவதில் பிழை" +diff -urN cracklib-2.9.6.old/po/te.po cracklib-2.9.6.new/po/te.po +--- cracklib-2.9.6.old/po/te.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/te.po 2018-10-09 11:57:33.761928776 +0200 +@@ -1,84 +1,85 @@ + # translation of cracklib.pot to Telugu + # Copyright (C) 2009 Free Software Foundation, Inc. + # This file is distributed under the same license as the cracklib package. +-# ++# + # Krishna Babu K , 2009. ++# kkrothap , 2013. #zanata + msgid "" + msgstr "" + "Project-Id-Version: cracklib\n" +-"Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" +-"POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2009-11-11 15:13+0530\n" +-"Last-Translator: Krishna Babu K \n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2012-12-14 16:11-0600\n" ++"PO-Revision-Date: 2013-09-26 10:54-0400\n" ++"Last-Translator: kkrothap \n" + "Language-Team: Telugu \n" +-"Language: te\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: KBabel 1.11.4\n" ++"Language: te\n" + "Plural-Forms: nplurals=2; plural=(n!=1);\n" + "\n" ++"X-Generator: Zanata 3.1.2\n" ++ ++#: ../lib/fascist.c:550 ++msgid "you are not registered in the password file" ++msgstr "మీరు సంకేతపదపు ఫైలునందు నమోదు కాలేదు" + +-#: lib/fascist.c:516 ++#: ../lib/fascist.c:564 + msgid "it is based on your username" + msgstr "ఇది మీ వినియోగదారినామముపై ఆధారపడి వుంది" + +-#: lib/fascist.c:576 ++#: ../lib/fascist.c:629 + msgid "it is based upon your password entry" + msgstr "ఇది మీ సంకేతపదము ప్రవేశముపై ఆధారపడి వుంది" + +-#: lib/fascist.c:591 ++#: ../lib/fascist.c:649 + msgid "it is derived from your password entry" + msgstr "ఇది మీ సంకేతపదము ప్రవేశమునుండి ఉత్పాదించబడింది" + +-#: lib/fascist.c:599 ++#: ../lib/fascist.c:662 + msgid "it's derived from your password entry" + msgstr "ఇది మీ సంకేతపదము ప్రవేశమునుండి ఉత్పాదించబడింది" + +-#: lib/fascist.c:608 ++#: ../lib/fascist.c:676 + msgid "it is derivable from your password entry" + msgstr "ఇది మీ సంకేతపదము ప్రవేశమునుండి ఉత్పాదించబడ గలదు" + +-#: lib/fascist.c:617 ++#: ../lib/fascist.c:690 + msgid "it's derivable from your password entry" + msgstr "ఇది మీ సంకేతపదము ప్రవేశమునుండి ఉత్పాదించబడ గలదు" + +-#: lib/fascist.c:674 +-msgid "you are not registered in the password file" +-msgstr "మీరు సంకేతపదపు ఫైలునందు నమోదు కాలేదు" +- +-#: lib/fascist.c:709 ++#: ../lib/fascist.c:726 + msgid "it is WAY too short" + msgstr "ఇది పొట్టి దానికి మార్గము" + +-#: lib/fascist.c:714 ++#: ../lib/fascist.c:731 + msgid "it is too short" + msgstr "ఇది మరీ పొట్టిదిగా వుంది" + +-#: lib/fascist.c:731 ++#: ../lib/fascist.c:748 + msgid "it does not contain enough DIFFERENT characters" + msgstr "ఇది కావలసినన్ని విభిన్న అక్షరాలను కలిగిలేదు" + +-#: lib/fascist.c:745 ++#: ../lib/fascist.c:762 + msgid "it is all whitespace" + msgstr "ఇది అంతా ఖాళీగానే వుంది" + +-#: lib/fascist.c:764 ++#: ../lib/fascist.c:781 + msgid "it is too simplistic/systematic" + msgstr "ఇదీ మరీ సాధారణంగా/క్రమపద్దతిలో వుంది" + +-#: lib/fascist.c:769 ++#: ../lib/fascist.c:786 + msgid "it looks like a National Insurance number." + msgstr "ఇది నేష్నల్ ఇన్సూరెన్స్ సంఖ్య వలె వుంది." + +-#: lib/fascist.c:801 ++#: ../lib/fascist.c:813 + msgid "it is based on a dictionary word" + msgstr "ఇది నిఘంటువు పదముపై ఆధారపడివుంది" + +-#: lib/fascist.c:820 ++#: ../lib/fascist.c:832 + msgid "it is based on a (reversed) dictionary word" + msgstr "ఇది నిఘంటువు(కలిగివున్న) పదముపై ఆధారపడివుంది" + +-#: lib/fascist.c:865 ++#: ../lib/fascist.c:867 + msgid "error loading dictionary" +-msgstr "" ++msgstr "నిఘంటువును లోడు చేయుటలో దోషం" +diff -urN cracklib-2.9.6.old/po/tr.po cracklib-2.9.6.new/po/tr.po +--- cracklib-2.9.6.old/po/tr.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/tr.po 2018-10-09 11:38:00.427619872 +0200 +@@ -3,19 +3,21 @@ + # This file is distributed under the same license as the PACKAGE package. + # + # Görkem Çetin , 2006. ++# Jan Dittberner , 2016. #zanata + msgid "" + msgstr "" +-"Project-Id-Version: cracklib\n" ++"Project-Id-Version: cracklib 2.9.6\n" + "Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" + "POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2006-03-12 22:56+0200\n" +-"Last-Translator: Görkem Çetin \n" +-"Language-Team: \n" +-"Language: \n" ++"PO-Revision-Date: 2016-06-18 01:03+0000\n" ++"Last-Translator: Copied by Zanata \n" ++"Language-Team: \n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: KBabel 1.11\n" ++"Language: tr\n" ++"Plural-Forms: nplurals=2; plural=(n>1)\n" ++"X-Generator: Zanata 4.6.2\n" + + #: lib/fascist.c:516 + msgid "it is based on your username" +diff -urN cracklib-2.9.6.old/po/uk.po cracklib-2.9.6.new/po/uk.po +--- cracklib-2.9.6.old/po/uk.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/uk.po 2018-10-09 11:38:27.234283479 +0200 +@@ -2,21 +2,22 @@ + # This file is distributed under the same license as the PACKAGE package. + # + # Yuri Chornoivan , 2010. ++# Jan Dittberner , 2016. #zanata ++# Yuri Chornoivan , 2016. #zanata + msgid "" + msgstr "" +-"Project-Id-Version: \n" ++"Project-Id-Version: cracklib 2.9.6\n" + "Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" + "POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2010-04-16 19:43+0300\n" ++"PO-Revision-Date: 2016-06-19 02:18+0000\n" + "Last-Translator: Yuri Chornoivan \n" + "Language-Team: Ukrainian \n" +-"Language: uk\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: Lokalize 1.0\n" +-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" ++"Language: uk\n" ++"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" ++"X-Generator: Zanata 4.6.2\n" + + #: lib/fascist.c:516 + msgid "it is based on your username" +@@ -80,4 +81,4 @@ + + #: lib/fascist.c:865 + msgid "error loading dictionary" +-msgstr "" ++msgstr "помилка під час спроби завантажити словник" +diff -urN cracklib-2.9.6.old/po/zh_CN.po cracklib-2.9.6.new/po/zh_CN.po +--- cracklib-2.9.6.old/po/zh_CN.po 2011-07-26 11:55:29.000000000 +0200 ++++ cracklib-2.9.6.new/po/zh_CN.po 2018-10-09 11:38:25.279234731 +0200 +@@ -1,78 +1,86 @@ +-# translation of cracklib.default.po to Wei Liu ++# translation of cracklib.po to Wei Liu + # Copyright (C) 2010 Free Software Foundation, Inc. +-# This file is distributed under the same license as the PACKAGE package. ++# This file is distributed under the same license as the cracklib package. + # + # Leah Liu , 2010. ++# translation of cracklib.default.po to Wei Liu ++# This file is distributed under the same license as the PACKAGE package. ++# Ludek Janda , 2018. #zanata + msgid "" + msgstr "" +-"Project-Id-Version: cracklib.default\n" +-"Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2010-03-02 21:00-0600\n" +-"PO-Revision-Date: 2010-09-07 23:42+1000\n" +-"Last-Translator: Leah Liu \n" ++"Project-Id-Version: cracklib 2.9.6\n" ++"Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" ++"POT-Creation-Date: 2015-08-18 13:45-0500\n" ++"PO-Revision-Date: 2018-08-21 09:51+0000\n" ++"Last-Translator: Copied by Zanata \n" + "Language-Team: Wei Liu\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: KBabel 1.11.4\n" +- +-#: lib/fascist.c:550 +-msgid "you are not registered in the password file" +-msgstr "尚未在口令文件中注册" ++"Language: zh_CN\n" ++"Plural-Forms: nplurals=1; plural=0\n" ++"X-Generator: Zanata 4.6.2\n" + +-#: lib/fascist.c:564 ++#: lib/fascist.c:516 + msgid "it is based on your username" +-msgstr "它基于用户名" ++msgstr "它基于您的用户名" + +-#: lib/fascist.c:629 ++#: lib/fascist.c:576 + msgid "it is based upon your password entry" +-msgstr "它基于输入的口令" ++msgstr "它基于您的密码" + +-#: lib/fascist.c:649 ++#: lib/fascist.c:591 + msgid "it is derived from your password entry" +-msgstr "它派生自输入的口令" ++msgstr "它根据您的密码生成" + +-#: lib/fascist.c:662 ++#: lib/fascist.c:599 + msgid "it's derived from your password entry" +-msgstr "它派生自输入的口令" ++msgstr "它根据您的密码生成" + +-#: lib/fascist.c:676 ++#: lib/fascist.c:608 + msgid "it is derivable from your password entry" +-msgstr "可从输入的口令推断" ++msgstr "它可以根据您的密码生成" + +-#: lib/fascist.c:690 ++#: lib/fascist.c:617 + msgid "it's derivable from your password entry" +-msgstr "可从输入的口令推断" ++msgstr "它可以根据您的密码生成" ++ ++#: lib/fascist.c:674 ++msgid "you are not registered in the password file" ++msgstr "您没有在密码文件中注册" + +-#: lib/fascist.c:726 ++#: lib/fascist.c:709 + msgid "it is WAY too short" +-msgstr "WAY 过短" ++msgstr "太短" + +-#: lib/fascist.c:731 ++#: lib/fascist.c:714 + msgid "it is too short" +-msgstr "过短" ++msgstr "太短" + +-#: lib/fascist.c:748 ++#: lib/fascist.c:731 + msgid "it does not contain enough DIFFERENT characters" +-msgstr "它没有包含足够的不同字符" ++msgstr "不包括足够不同的字符" + +-#: lib/fascist.c:762 ++#: lib/fascist.c:745 + msgid "it is all whitespace" +-msgstr "全是空格" ++msgstr "都是空白" + +-#: lib/fascist.c:781 ++#: lib/fascist.c:764 + msgid "it is too simplistic/systematic" +-msgstr "过于简单化/系统化" ++msgstr "太简单或太有规律" + +-#: lib/fascist.c:786 ++#: lib/fascist.c:769 + msgid "it looks like a National Insurance number." +-msgstr "看起来像国家保险号码。" ++msgstr "象国家保险号。" + +-#: lib/fascist.c:813 ++#: lib/fascist.c:801 + msgid "it is based on a dictionary word" +-msgstr "它基于字典单词" ++msgstr "它基于一个字典中的词" + +-#: lib/fascist.c:832 ++#: lib/fascist.c:820 + msgid "it is based on a (reversed) dictionary word" +-msgstr "它基于(颠倒的)字典单词" ++msgstr "它基于一个字典中的词的反向拼写" + ++#: lib/fascist.c:865 ++msgid "error loading dictionary" ++msgstr "加载字典错误" +diff -urN cracklib-2.9.6.old/po/zh_TW.po cracklib-2.9.6.new/po/zh_TW.po +--- cracklib-2.9.6.old/po/zh_TW.po 2015-08-18 20:48:15.000000000 +0200 ++++ cracklib-2.9.6.new/po/zh_TW.po 2018-10-09 11:37:47.781308079 +0200 +@@ -2,19 +2,22 @@ + # Copyright (C) YEAR Free Software Foundation, Inc. + # This file is distributed under the same license as the PACKAGE package. + # FIRST AUTHOR , YEAR. +-# ++# Jan Dittberner , 2016. #zanata ++# Peter Pan , 2018. #zanata + msgid "" + msgstr "" +-"Project-Id-Version: cracklib\n" ++"Project-Id-Version: cracklib 2.9.6\n" + "Report-Msgid-Bugs-To: cracklib-devel@lists.sourceforge.net\n" + "POT-Creation-Date: 2015-08-18 13:45-0500\n" +-"PO-Revision-Date: 2005-06-23 12:52+0200\n" +-"Last-Translator: Novell Language \n" ++"PO-Revision-Date: 2018-08-16 12:45+0000\n" ++"Last-Translator: Copied by Zanata \n" + "Language-Team: Novell Language \n" +-"Language: \n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" ++"Language: zh_TW\n" ++"Plural-Forms: nplurals=1; plural=0\n" ++"X-Generator: Zanata 4.6.2\n" + + #: lib/fascist.c:516 + msgid "it is based on your username" +@@ -78,4 +81,4 @@ + + #: lib/fascist.c:865 + msgid "error loading dictionary" +-msgstr "" ++msgstr "讀取字典時錯誤" +diff -urN cracklib-2.9.6.old/zanata.xml cracklib-2.9.6.new/zanata.xml +--- cracklib-2.9.6.old/zanata.xml 1970-01-01 01:00:00.000000000 +0100 ++++ cracklib-2.9.6.new/zanata.xml 2018-10-09 11:37:21.033648627 +0200 +@@ -0,0 +1,7 @@ ++ ++ ++ https://fedora.zanata.org/ ++ cracklib ++ master ++ gettext ++ diff --git a/SOURCES/cracklib.default.zh_CN.po b/SOURCES/cracklib.default.zh_CN.po new file mode 100644 index 0000000..e080d6c --- /dev/null +++ b/SOURCES/cracklib.default.zh_CN.po @@ -0,0 +1,78 @@ +# translation of cracklib.default.po to Wei Liu +# Copyright (C) 2010 Free Software Foundation, Inc. +# This file is distributed under the same license as the PACKAGE package. +# +# Leah Liu , 2010. +msgid "" +msgstr "" +"Project-Id-Version: cracklib.default\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-02 21:00-0600\n" +"PO-Revision-Date: 2010-09-07 23:42+1000\n" +"Last-Translator: Leah Liu \n" +"Language-Team: Wei Liu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: lib/fascist.c:550 +msgid "you are not registered in the password file" +msgstr "尚未在口令文件中注册" + +#: lib/fascist.c:564 +msgid "it is based on your username" +msgstr "它基于用户名" + +#: lib/fascist.c:629 +msgid "it is based upon your password entry" +msgstr "它基于输入的口令" + +#: lib/fascist.c:649 +msgid "it is derived from your password entry" +msgstr "它派生自输入的口令" + +#: lib/fascist.c:662 +msgid "it's derived from your password entry" +msgstr "它派生自输入的口令" + +#: lib/fascist.c:676 +msgid "it is derivable from your password entry" +msgstr "可从输入的口令推断" + +#: lib/fascist.c:690 +msgid "it's derivable from your password entry" +msgstr "可从输入的口令推断" + +#: lib/fascist.c:726 +msgid "it is WAY too short" +msgstr "WAY 过短" + +#: lib/fascist.c:731 +msgid "it is too short" +msgstr "过短" + +#: lib/fascist.c:748 +msgid "it does not contain enough DIFFERENT characters" +msgstr "它没有包含足够的不同字符" + +#: lib/fascist.c:762 +msgid "it is all whitespace" +msgstr "全是空格" + +#: lib/fascist.c:781 +msgid "it is too simplistic/systematic" +msgstr "过于简单化/系统化" + +#: lib/fascist.c:786 +msgid "it looks like a National Insurance number." +msgstr "看起来像国家保险号码。" + +#: lib/fascist.c:813 +msgid "it is based on a dictionary word" +msgstr "它基于字典单词" + +#: lib/fascist.c:832 +msgid "it is based on a (reversed) dictionary word" +msgstr "它基于(颠倒的)字典单词" + diff --git a/SPECS/cracklib.spec b/SPECS/cracklib.spec new file mode 100644 index 0000000..b7ffe7f --- /dev/null +++ b/SPECS/cracklib.spec @@ -0,0 +1,649 @@ +# Reflects the values hard-coded in various Makefile.am's in the source tree. +%define dictdir %{_datadir}/cracklib +%define dictpath %{dictdir}/pw_dict + +Summary: A password-checking library +Name: cracklib +Version: 2.9.6 +Release: 15%{?dist} +Group: System Environment/Libraries +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 + +# 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 + +# From attachment to https://bugzilla.redhat.com/show_bug.cgi?id=627449 +Source3: cracklib.default.zh_CN.po + +# No upstream source for this, just words missing from the current cracklib-words +Source10: missing-words.gz + +Patch1: cracklib-2.9.1-inttypes.patch +Patch2: cracklib-2.9.0-python-gzdicts.patch +Patch4: cracklib-2.9.6-packlib-reentrant.patch +Patch6: cracklib-2.9.6-simplistic.patch +Patch7: cracklib-2.9.6-translation-updates.patch +Patch8: cracklib-2.9.6-cve-2016-6318.patch +Patch9: cracklib-2.9.6-lookup.patch +URL: http://sourceforge.net/projects/cracklib/ +License: LGPLv2+ +Buildroot: %{_tmppath}/%{name}-%{version}-root +BuildRequires: gcc +BuildRequires: words, gettext +BuildRequires: gettext-autopoint +BuildRequires: zlib-devel +%if 0%{?rhel} == 0 +BuildRequires: python2-devel +%endif +Conflicts: cracklib-dicts < 2.8 +# The cracklib-format script calls gzip, but without a specific path. +Requires: gzip + +%description +CrackLib tests passwords to determine whether they match certain +security-oriented characteristics, with the purpose of stopping users +from choosing passwords that are easy to guess. CrackLib performs +several tests on passwords: it tries to generate words from a username +and gecos entry and checks those words against the password; it checks +for simplistic patterns in passwords; and it checks for the password +in a dictionary. + +CrackLib is actually a library containing a particular C function +which is used to check the password, as well as other C +functions. CrackLib is not a replacement for a passwd program; it must +be used in conjunction with an existing passwd program. + +Install the cracklib package if you need a program to check users' +passwords to see if they are at least minimally secure. If you install +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} + +%description devel +The cracklib-devel package contains the header files and libraries needed +for compiling applications which use cracklib. + +%if 0%{?rhel} == 0 +%package -n python2-cracklib +Summary: Python bindings for applications which use cracklib +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} +%{?python_provide:%python_provide python2-cracklib} +# Remove before F30 +Provides: %{name}-python = %{version}-%{release} +Provides: %{name}-python%{?_isa} = %{version}-%{release} +Obsoletes: %{name}-python < %{version}-%{release} + +%description -n python2-cracklib +The cracklib-python package contains a module which permits applications +written in the Python programming language to use cracklib. +%endif + +%package dicts +Summary: The standard CrackLib dictionaries +Group: System Environment/Libraries +BuildRequires: words >= 2-13 +Requires: cracklib = %{version}-%{release} + +%description dicts +The cracklib-dicts package includes the CrackLib dictionaries. +CrackLib will need to use the dictionary appropriate to your system, +which is normally put in /usr/share/dict/words. Cracklib-dicts also +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 + +# 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 +%patch2 -p1 -b .gzdicts +%patch4 -p1 -b .reentrant +%patch6 -p1 -b .simplistic +%patch7 -p1 -b .translations +%patch8 -p1 -b .overflow +%patch9 -p1 -b .lookup + +mkdir cracklib-dicts +for dict in %{SOURCE10} %{SOURCE1} +do + cp -fv ${dict} cracklib-dicts/ +done +chmod +x util/cracklib-format + +%build +# 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 \ +%if 0%{?rhel} == 0 + --with-python \ +%else + --without-python \ +%endif + --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 '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 + +toprelpath=.. +touch $RPM_BUILD_ROOT/top +while ! test -f $RPM_BUILD_ROOT/%{_libdir}/$toprelpath/top ; do + toprelpath=../$toprelpath +done +rm -f $RPM_BUILD_ROOT/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 +fi +rm -f $RPM_BUILD_ROOT/%{_libdir}/python*/site-packages/_cracklib*.*a +rm -f $RPM_BUILD_ROOT/%{_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/ +if ! test -s $RPM_BUILD_ROOT/%{_mandir}/man8/cracklib-packer.8 ; then + echo .so man8/cracklib-format.8 > $RPM_BUILD_ROOT/%{_mandir}/man8/cracklib-packer.8 +fi +if ! test -s $RPM_BUILD_ROOT/%{_mandir}/man8/cracklib-unpacker.8 ; then + echo .so man8/cracklib-format.8 > $RPM_BUILD_ROOT/%{_mandir}/man8/cracklib-unpacker.8 +fi + +%find_lang %{name} + +%check +make test DESTDIR=$RPM_BUILD_ROOT +%if 0%{?rhel} == 0 +# 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} %{__python2} 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 +%endif + +%ldconfig_scriptlets + +%files -f %{name}.lang +%doc README README-WORDS NEWS README-LICENSE AUTHORS +%{!?_licensedir:%global license %%doc} +%license COPYING.LIB +%{_libdir}/libcrack.so.* +%dir %{_datadir}/cracklib +%{_datadir}/cracklib/cracklib.magic +%{_sbindir}/*cracklib* +%{_mandir}/man8/* + +%files devel +%{_includedir}/* +%{_libdir}/libcrack.so +%{_mandir}/man3/* + +%files dicts +%{_datadir}/cracklib/pw_dict.* +%{_datadir}/cracklib/cracklib-small.* +%{_libdir}/cracklib_dict.* +%{_sbindir}/mkdict +%{_sbindir}/packer + +%if 0%{?rhel} == 0 +%files -n python2-cracklib +%{_libdir}/python*/site-packages/_cracklib*.so +%{_libdir}/python*/site-packages/*.py* +%endif + +%changelog +* Mon Nov 26 2018 Tomáš Mráz - 2.9.6-15 +- Fix regression in dictionary creation and lookup + +* Tue Oct 9 2018 Tomáš Mráz - 2.9.6-14 +- Updated translations + +* Wed Feb 21 2018 Tomáš Mráz - 2.9.6-13 +- Drop Python 2 support in RHEL + +* Wed Feb 07 2018 Fedora Release Engineering - 2.9.6-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Sat Feb 03 2018 Igor Gnatenko - 2.9.6-11 +- Switch to %%ldconfig_scriptlets + +* Wed Jan 03 2018 Iryna Shcherbina - 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 - 2.9.6-9 +- Add Provides for the old name without %%_isa + +* Sat Aug 19 2017 Zbigniew Jędrzejewski-Szmek - 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 - 2.9.6-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 2.9.6-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Feb 10 2017 Fedora Release Engineering - 2.9.6-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Thu Dec 8 2016 Fedora Release Engineering - 2.9.6-4 +- fix CVE-2016-6318 - avoid overflows in GECOS handling and mangling password (#1364944) + +* Tue Jul 19 2016 Fedora Release Engineering - 2.9.6-3 +- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages + +* Wed Feb 03 2016 Fedora Release Engineering - 2.9.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Fri Oct 23 2015 Tomáš Mráz - 2.9.6-1 +- new upstream release +- cleanup of the word lists + +* Wed Jun 17 2015 Fedora Release Engineering - 2.9.1-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sat Aug 16 2014 Fedora Release Engineering - 2.9.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Fri Jul 11 2014 Tom Callaway - 2.9.1-4 +- fix license handling + +* Sat Jun 07 2014 Fedora Release Engineering - 2.9.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Wed Feb 5 2014 Tomáš Mráz - 2.9.1-2 +- move python files to libdir + +* Mon Dec 9 2013 Tomáš Mráz - 2.9.1-1 +- new upstream release + +* Mon Dec 2 2013 Tomáš Mráz - 2.9.0-9 +- update only .gmo files to avoid multilib conflicts (#1036305) + +* Thu Nov 28 2013 Tomáš Mráz - 2.9.0-8 +- updated translations + +* Thu Oct 31 2013 Tomáš Mráz - 2.9.0-7 +- do not remove any printable characters in cracklib-format + +* Thu Oct 31 2013 Tomáš Mráz - 2.9.0-6 +- fix the broken zh_CN translation + +* Tue Sep 3 2013 Tomáš Mráz - 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 - 2.9.0-4 +- revert compression of the dictionaries as the performance penalty is too big + +* Wed Aug 21 2013 Tomáš Mráz - 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 - 2.9.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Mon Jun 3 2013 Nalin Dahyabhai - 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 - 2.8.22-3 +- point cracklib-packer and cracklib-unpacker man pages to cracklib-format + (internal tooling) + +* Wed Dec 19 2012 Nalin Dahyabhai - 2.8.22-2 +- add missing buildrequires: on zlib-devel (#888876) + +* Mon Dec 17 2012 Nalin Dahyabhai - 2.8.22-1 +- update to 2.8.22 (#887461), which now returns an error instead of exiting + when there's a failure opening the dictionary in FascistCheck() + +* Thu Dec 13 2012 Nalin Dahyabhai - 2.8.21-1 +- update to 2.8.21 + +* Mon Dec 10 2012 Nalin Dahyabhai - 2.8.20-1 +- update to 2.8.20 (#885439) + +* Tue Nov 20 2012 Nalin Dahyabhai - 2.8.19-3 +- update the copy of the debian source package to one that can currently be + retrieved using the URL we list for it + +* Wed Jul 18 2012 Fedora Release Engineering - 2.8.19-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Fri May 18 2012 Nalin Dahyabhai - 2.8.19-1 +- update to 2.8.19 + +* Thu Jan 12 2012 Fedora Release Engineering - 2.8.18-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Feb 08 2011 Fedora Release Engineering - 2.8.18-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Thu Jan 27 2011 Nalin Dahyabhai - 2.8.18-1 +- update to 2.8.18 +- add man pages from Debian (#583932) +- replace zh_CN translation (related to #627449) + +* Wed Jul 21 2010 David Malcolm - 2.8.16-4 +- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild + +* Sat Jul 3 2010 Dan Horák - 2.8.16-3 +- added gettext-autopoint as BR: + +* Thu May 20 2010 Nalin Dahyabhai - 2.8.16-2 +- pull in changes to the Hindi translation (#589188) + +* Tue Apr 20 2010 Nalin Dahyabhai - 2.8.16-1 +- update to 2.8.16 + +* Fri Jan 22 2010 Nalin Dahyabhai - 2.8.15-3 +- add passwords derived from rockyou breach data to the dictionaries (Matthew + Miller, #557592) + +* Thu Jan 21 2010 Nalin Dahyabhai - 2.8.15-2 +- update license: tag +- include license file + +* Tue Dec 1 2009 Nalin Dahyabhai - 2.8.15-1 +- update to 2.8.15 +- update cracklib-words to the current version (2008-05-07) +- fixup URLs for various dictionary sources that we use +- fix freeing-an-uninitialized-pointer in the python module (SF#2907102) +- add a disttag + +* Fri Jul 24 2009 Fedora Release Engineering - 2.8.13-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Mon May 18 2009 Nalin Dahyabhai - 2.8.13-5 +- add explicit dependency on gzip for the sake of cracklib-format (Daniel + Mach, #501278) + +* Tue Feb 24 2009 Fedora Release Engineering - 2.8.13-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Thu Feb 19 2009 Nalin Dahyabhai - 2.8.13-3 +- drop trailing "." from the package description for the dicts + subpackage (#225659) + +* Sat Nov 29 2008 Ignacio Vazquez-Abrams - 2.8.13-2 +- Rebuild for Python 2.6 + +* Tue Oct 28 2008 Nalin Dahyabhai - 2.8.13-1 +- update to 2.8.13, which overhauls the python bindings and revises + FascistCheck()'s behavior: + 2.8.12 success: returns None, fail: returns error text, other: exceptions + 2.8.13 success: returns candidate, fail: throws ValueError, other: exceptions + +* Tue Oct 28 2008 Nalin Dahyabhai - 2.8.12-3 +- fix errors rebuilding with libtool that's newer than the one upstream + has (#467364) + +* Tue Feb 19 2008 Fedora Release Engineering - 2.8.12-2 +- Autorebuild for GCC 4.3 + +* Fri Jan 25 2008 Nalin Dahyabhai - 2.8.12-1 +- update to 2.8.12, which was relicensed to GPLv2 +- package the now-bundled cracklib-small dictionary in cracklib-dicts + +* Tue Aug 21 2007 Nalin Dahyabhai - 2.8.10-3 +- rebuild + +* Mon Jul 23 2007 Nalin Dahyabhai +- add a %%check script to catch things like #249210 + +* Mon Jul 23 2007 Nalin Dahyabhai - 2.8.10-2 +- work around non-executable util/cracklib-format giving us empty/garbage + dictionaries (#249210) + +* Thu Jul 19 2007 Nalin Dahyabhai - 2.8.10-1 +- update to 2.8.10 + +* Wed Jun 20 2007 Nalin Dahyabhai - 2.8.9-11 +- improve reports of out-of-memory exceptions so that they don't include a + bogus filename +- improve reports of file-missing exceptions from the python module so that + they give the right filename (#225858) + +* Mon Mar 12 2007 Nalin Dahyabhai - 2.8.9-10 +- explicitly include required headers from (#228698) +- attempt to provide doc strings in the python module + +* Mon Feb 12 2007 Nalin Dahyabhai - 2.8.9-9 +- drop final "." from summaries (Jef Spaleta, #225659) +- drop static library from -devel subpackage (Jef Spaleta, #225659) +- note that the most recently-added wordlist came from bugzilla (#225659) +- remove explicit dependency on gzip, as it's implicit (Jef Spaleta, #225659) +- convert %%triggerpostun to not use a shell as an interpreter (#225659) + +* Wed Jan 31 2007 Nalin Dahyabhai - 2.8.9-8 +- add word list from attachment #126053 (#185314) + +* Thu Jan 25 2007 Nalin Dahyabhai - 2.8.9-7 +- fix check for the existence of dictionaries when the caller specifies a + location (#224347, upstream #1644628) + +* Thu Dec 7 2006 Jeremy Katz - 2.8.9-6 +- rebuild against python 2.5 + +* Sun Oct 29 2006 Nalin Dahyabhai - 2.8.9-5 +- split out cracklib-python (#203327) + +* Sun Oct 29 2006 Nalin Dahyabhai - 2.8.9-4 +- split out cracklib-devel (#203569) + +* Wed Jul 12 2006 Jesse Keating - 2.8.9-3.1 +- rebuild + +* Mon Jun 12 2006 Jesse Keating - 2.8.9-3 +- Add missing br, automake, libtool (#194738) + +* Tue Apr 25 2006 Nalin Dahyabhai - 2.8.9-2 +- update to 2.8.9 +- only create compat symlinks for the dictionaries if we aren't installing + them into the old locations + +* Fri Feb 10 2006 Jesse Keating - 2.8.6-1.2.1 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Jesse Keating - 2.8.6-1.2 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Mon Nov 7 2005 Nalin Dahyabhai 2.8.6-1 +- update to 2.8.6 +- remove .la file (#172632) + +* Wed Sep 28 2005 Nalin Dahyabhai 2.8.5-2 +- update to 2.8.5 + +* Tue Sep 27 2005 Nalin Dahyabhai 2.8.4-1 +- update to 2.8.4 +- build python module + +* Fri May 13 2005 Nalin Dahyabhai 2.8.3-1 +- update to 2.8.3 + +* Thu Mar 17 2005 Nalin Dahyabhai 2.8.2-1 +- update to 2.8.2 + +* Wed Mar 16 2005 Nalin Dahyabhai 2.8.1-1 +- update to 2.8.1 + - moves dictionary to new default location under %%{_datadir} -- the + dictionary format is the same across all architectures + - renames "packer" to "cracklib-packer" +- conflict with cracklib-dicts < 2.8, where the on-disk format was not + compatible on 64-bit arches due to now-fixed cleanliness bugs +- move binaries for manipulating and checking words against dictionaries + from -dicts into the main package + +* Mon Jan 3 2005 Nalin Dahyabhai 2.7-30 +- rebuild + +* Mon Jan 3 2005 Nalin Dahyabhai 2.7-29 +- correctly build on 64-bit systems (part of #143417) +- patch so that 32- and 64-bit libcrack can read dictionaries which were + incorrectly generated on 64-bit systems of the same endianness (more #143417) +- include a sample cracklib magic file +- stop using /usr/dict/* when building the dictionary +- list words as a build requirement, which it is, instead of a run-time + requirement +- provide a virtual arch-specific dep in cracklib-dicts, require it in + cracklib (part of #143417) + +* Tue Jun 15 2004 Elliot Lee +- rebuilt + +* Tue Mar 02 2004 Elliot Lee +- rebuilt + +* Fri Feb 13 2004 Elliot Lee +- rebuilt + +* Wed Feb 4 2004 Nalin Dahyabhai 2.7-26 +- update URL (previous page moved) (#114894) + +* Fri Jan 30 2004 Nalin Dahyabhai 2.7-25 +- fix ldconfig invocation in trigger for older versions which included the + soname symlink (#114620) + +* Mon Dec 1 2003 Nalin Dahyabhai 2.7-24 +- include packer.h for reading dictionaries directly, since we already include + packer in the -dicts subpackage (#68339) +- don't include the soname symlink in the package, let ldconfig do its job + +* Wed Jun 18 2003 Nalin Dahyabhai 2.7-23 +- rebuild + +* Mon Jun 16 2003 Nalin Dahyabhai 2.7-22 +- rebuild + +* Wed Jun 04 2003 Elliot Lee +- rebuilt + +* Wed Apr 30 2003 Nalin Dahyabhai +- update URL + +* Tue Feb 04 2003 Florian La Roche +- add symlink to shared libs + +* Wed Jan 22 2003 Tim Powers +- rebuilt + +* Wed Sep 25 2002 Nalin Dahyabhai 2.7-19 +- fix for builds on multilib systems (set DICTPATH properly) + +* Fri Jun 21 2002 Tim Powers +- automated rebuild + +* Sun May 26 2002 Tim Powers +- automated rebuild + +* Thu May 9 2002 Nalin Dahyabhai 2.7-16 +- rebuild in new environment + +* Fri Feb 22 2002 Nalin Dahyabhai 2.7-15 +- rebuild + +* Wed Jan 09 2002 Tim Powers +- automated rebuild + +* Tue Oct 2 2001 Nalin Dahyabhai 2.7-13 +- use getpwuid_r instead of getpwuid + +* Fri Aug 3 2001 Nalin Dahyabhai 2.7-12 +- remove cruft that ldconfig already knows how to manage +- don't explicitly strip anything -- the brp setup decides that +- tweak the header so that it can be used in C++ (#46685) +- buildprereq the words package + +* Tue Jun 26 2001 Florian La Roche +- add link from library major version number + +* Sun Jun 24 2001 Elliot Lee +- Bump release + rebuild. + +* Wed Jul 12 2000 Prospector +- automatic rebuild + +* Tue Jun 27 2000 Nalin Dahyabhai +- FHS fixes +- fix undeclared function warnings from the new compiler +- fix URL + +* Fri Apr 07 2000 Trond Eivind Glomsrød +- switched to use /usr/share/dict/words + +* Tue Apr 06 1999 Preston Brown +- strip binaries + +* Sun Mar 21 1999 Cristian Gafton +- auto rebuild in the new build environment (release 4) + +* Wed Jan 06 1999 Cristian Gafton +- build for glibc 2.1 + +* Sat May 09 1998 Prospector System +- translations modified for de, fr, tr + +* Tue Mar 10 1998 Cristian Gafton +- updated to 2.7 +- build shared libraries + +* Mon Nov 03 1997 Donnie Barnes +- added -fPIC + +* Mon Oct 13 1997 Donnie Barnes +- basic spec file cleanups + +* Mon Jun 02 1997 Erik Troan +- built against glibc