From 71cf1ca7e10b9f015d441bd4521436f7db8242ea Mon Sep 17 00:00:00 2001 From: Marco d'Itri Date: Wed, 12 Sep 2018 02:26:33 +0200 Subject: [PATCH 01/33] Update the list of new gTLDs --- new_gtlds_list | 1 + 1 file changed, 1 insertion(+) diff --git a/new_gtlds_list b/new_gtlds_list index 5a6f86a..ac1a64e 100644 --- a/new_gtlds_list +++ b/new_gtlds_list @@ -512,6 +512,7 @@ imamat imdb immo immobilien +inc industries infiniti ing From 5fc64b5eba57177aa5956bfd0ba274e4782f8078 Mon Sep 17 00:00:00 2001 From: Marco d'Itri Date: Sun, 9 Sep 2018 00:59:49 +0200 Subject: [PATCH 02/33] mkpasswd: support the new libxcrypt 4.x --- Makefile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 608184d..01ae5ce 100644 --- a/Makefile +++ b/Makefile @@ -51,10 +51,12 @@ whois_OBJECTS += simple_recode.o DEFS += -DHAVE_ICONV endif -ifdef HAVE_XCRYPT +ifeq ($(shell $(PKG_CONFIG) --exists 'libxcrypt >= 4.1' || echo NO),) +DEFS += -DHAVE_LINUX_CRYPT_GENSALT $(shell $(PKG_CONFIG) --cflags libcrypt) +mkpasswd_LDADD += $(shell $(PKG_CONFIG) --libs libcrypt) +else ifdef HAVE_XCRYPT mkpasswd_LDADD += -lxcrypt DEFS += -DHAVE_XCRYPT -DHAVE_LINUX_CRYPT_GENSALT -else ifdef HAVE_LINUX_CRYPT_GENSALT # owl and openSUSE have crypt_gensalt(3) in the libc's libcrypt DEFS += -DHAVE_LINUX_CRYPT_GENSALT From 8392fd349dfc25080fcd022a0bbd32e6590c85a8 Mon Sep 17 00:00:00 2001 From: Marco d'Itri Date: Sun, 9 Sep 2018 01:10:59 +0200 Subject: [PATCH 03/33] mkpasswd: use perror with crypt and crypt_gensalt Only some implementations of crypt(3) set errno on errors. --- config.h | 7 +++++++ mkpasswd.c | 13 ++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/config.h b/config.h index 112d14c..66f7e71 100644 --- a/config.h +++ b/config.h @@ -95,6 +95,13 @@ # define HAVE_GETENTROPY #endif +/* some versions of crypt(3) set errno on error */ +#if defined __GLIBC__ || (defined __SVR4 && defined __sun) || defined OpenBSD || AIX +# define CRYPT_SETS_ERRNO 1 +#else +# define CRYPT_SETS_ERRNO 0 +#endif + #ifdef ENABLE_NLS # ifndef NLS_CAT_NAME # define NLS_CAT_NAME "whois" diff --git a/mkpasswd.c b/mkpasswd.c index 0eb89f3..558624c 100644 --- a/mkpasswd.c +++ b/mkpasswd.c @@ -283,16 +283,16 @@ int main(int argc, char *argv[]) #ifdef HAVE_SOLARIS_CRYPT_GENSALT salt = crypt_gensalt(salt_prefix, NULL); if (!salt) { - perror("crypt_gensalt"); - exit(2); + perror("crypt_gensalt"); + exit(2); } #elif defined HAVE_LINUX_CRYPT_GENSALT void *entropy = get_random_bytes(64); salt = crypt_gensalt(salt_prefix, rounds, entropy, 64); if (!salt) { - fprintf(stderr, "crypt_gensalt failed.\n"); - exit(2); + perror("crypt_gensalt"); + exit(2); } free(entropy); #else @@ -342,7 +342,10 @@ int main(int argc, char *argv[]) result = crypt(password, salt); /* xcrypt returns "*0" on errors */ if (!result || result[0] == '*') { - fprintf(stderr, "crypt failed.\n"); + if (CRYPT_SETS_ERRNO) + perror("crypt"); + else + fprintf(stderr, "crypt failed.\n"); exit(2); } /* yes, using strlen(salt_prefix) on salt. It's not From 19e44ac2ec9d4245353de5e770b15a8653cbc5fb Mon Sep 17 00:00:00 2001 From: Marco d'Itri Date: Sun, 9 Sep 2018 01:17:10 +0200 Subject: [PATCH 04/33] mkpasswd: let crypt_gensalt collect entropy by itself Let crypt_gensalt(3) collect entropy by itself instead of having mkpasswd provide it. This is supported by the libxcrypt implementation of crypt_gensalt(3). --- mkpasswd.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/mkpasswd.c b/mkpasswd.c index 558624c..743c269 100644 --- a/mkpasswd.c +++ b/mkpasswd.c @@ -294,7 +294,8 @@ int main(int argc, char *argv[]) perror("crypt_gensalt"); exit(2); } - free(entropy); + if (entropy) + free(entropy); #else unsigned int salt_len = salt_maxlen; @@ -360,9 +361,21 @@ int main(int argc, char *argv[]) exit(0); } -#if defined RANDOM_DEVICE || defined HAVE_ARC4RANDOM_BUF || defined HAVE_GETENTROPY +#ifdef CRYPT_GENSALT_IMPLEMENTS_AUTO_ENTROPY -void* get_random_bytes(const unsigned int count) +/* + * If NULL is passed to the libxcrypt version of crypt_gensalt() instead of + * the buffer of random bytes then the function will obtain by itself the + * required randomness. + */ +inline void *get_random_bytes(const unsigned int count) +{ + return NULL; +} + +#elif defined RANDOM_DEVICE || defined HAVE_ARC4RANDOM_BUF || defined HAVE_GETENTROPY + +void *get_random_bytes(const unsigned int count) { char *buf = NOFAIL(malloc(count)); From 7a325d277c1033322f87cc4bb5998c9350a4bd2a Mon Sep 17 00:00:00 2001 From: Marco d'Itri Date: Sun, 16 Sep 2018 03:34:02 +0200 Subject: [PATCH 05/33] mkpasswd: ifdef out the entropy gathering code on Solaris --- mkpasswd.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mkpasswd.c b/mkpasswd.c index 743c269..0a888c7 100644 --- a/mkpasswd.c +++ b/mkpasswd.c @@ -373,6 +373,12 @@ inline void *get_random_bytes(const unsigned int count) return NULL; } +#elif defined HAVE_SOLARIS_CRYPT_GENSALT + +/* + * The Solaris version of crypt_gensalt() gathers the random data by itself. + */ + #elif defined RANDOM_DEVICE || defined HAVE_ARC4RANDOM_BUF || defined HAVE_GETENTROPY void *get_random_bytes(const unsigned int count) From 44775cb342d63ec3fbc7eafee604a59c643913a0 Mon Sep 17 00:00:00 2001 From: Marco d'Itri Date: Mon, 10 Sep 2018 14:59:49 +0200 Subject: [PATCH 06/33] mkpasswd: rename HAVE_XCRYPT to HAVE_XCRYPT_H --- Makefile | 2 +- mkpasswd.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 01ae5ce..0e9588f 100644 --- a/Makefile +++ b/Makefile @@ -55,8 +55,8 @@ ifeq ($(shell $(PKG_CONFIG) --exists 'libxcrypt >= 4.1' || echo NO),) DEFS += -DHAVE_LINUX_CRYPT_GENSALT $(shell $(PKG_CONFIG) --cflags libcrypt) mkpasswd_LDADD += $(shell $(PKG_CONFIG) --libs libcrypt) else ifdef HAVE_XCRYPT +DEFS += -DHAVE_XCRYPT_H -DHAVE_LINUX_CRYPT_GENSALT mkpasswd_LDADD += -lxcrypt -DEFS += -DHAVE_XCRYPT -DHAVE_LINUX_CRYPT_GENSALT ifdef HAVE_LINUX_CRYPT_GENSALT # owl and openSUSE have crypt_gensalt(3) in the libc's libcrypt DEFS += -DHAVE_LINUX_CRYPT_GENSALT diff --git a/mkpasswd.c b/mkpasswd.c index 0a888c7..e2c2cbc 100644 --- a/mkpasswd.c +++ b/mkpasswd.c @@ -35,7 +35,7 @@ #include #include #include -#ifdef HAVE_XCRYPT +#ifdef HAVE_XCRYPT_H #include #include #endif From c1cb4b2ca0ad1f237cccc84a4f1b84cd60a76a15 Mon Sep 17 00:00:00 2001 From: Marco d'Itri Date: Tue, 11 Sep 2018 01:15:34 +0200 Subject: [PATCH 07/33] mkpasswd: update the libowcrypt Makefile section Distributions which have crypt_gensalt in libowcrypt now should define a HAVE_LIBOWCRYPT=1 Makefile variable. --- Makefile | 9 +++++---- mkpasswd.c | 1 - 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 0e9588f..bd12220 100644 --- a/Makefile +++ b/Makefile @@ -57,10 +57,11 @@ mkpasswd_LDADD += $(shell $(PKG_CONFIG) --libs libcrypt) else ifdef HAVE_XCRYPT DEFS += -DHAVE_XCRYPT_H -DHAVE_LINUX_CRYPT_GENSALT mkpasswd_LDADD += -lxcrypt -ifdef HAVE_LINUX_CRYPT_GENSALT -# owl and openSUSE have crypt_gensalt(3) in the libc's libcrypt -DEFS += -DHAVE_LINUX_CRYPT_GENSALT -endif +else ifdef HAVE_LIBOWCRYPT +# owl and openSUSE have crypt_gensalt(3) in libowcrypt +DEFS += -DHAVE_LINUX_CRYPT_GENSALT -D_OW_SOURCE +mkpasswd_LDADD += -lcrypt -lowcrypt +else mkpasswd_LDADD += -lcrypt endif diff --git a/mkpasswd.c b/mkpasswd.c index e2c2cbc..7450ad3 100644 --- a/mkpasswd.c +++ b/mkpasswd.c @@ -40,7 +40,6 @@ #include #endif #ifdef HAVE_LINUX_CRYPT_GENSALT -#define _OW_SOURCE #include #endif #ifdef HAVE_GETTIMEOFDAY From 61f4e5d64c9ad64ff6b70bb2bf0afb3165bb9c51 Mon Sep 17 00:00:00 2001 From: Marco d'Itri Date: Tue, 11 Sep 2018 01:17:01 +0200 Subject: [PATCH 08/33] mkpasswd: simplify a check for errors salt is a const char *, so we know that it cannot be modified as a side effect. --- mkpasswd.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/mkpasswd.c b/mkpasswd.c index 7450ad3..3b3406c 100644 --- a/mkpasswd.c +++ b/mkpasswd.c @@ -348,9 +348,7 @@ int main(int argc, char *argv[]) fprintf(stderr, "crypt failed.\n"); exit(2); } - /* yes, using strlen(salt_prefix) on salt. It's not - * documented whether crypt_gensalt may change the prefix */ - if (!strneq(result, salt, strlen(salt_prefix))) { + if (!strneq(result, salt, strlen(salt))) { fprintf(stderr, _("Method not supported by crypt(3).\n")); exit(2); } From 3197cb7db4d5ce13f1d011cfa6f9e42164d9b091 Mon Sep 17 00:00:00 2001 From: Marco d'Itri Date: Tue, 11 Sep 2018 01:21:52 +0200 Subject: [PATCH 09/33] mkpasswd: support letting crypt_gensalt decide the prefix If crypt_gensalt (as implemented by Solaris and modern versions of libxcrypt) is passed a NULL prefix then it will decide by itself which algorithm should be used by default. --- config.h | 1 + mkpasswd.c | 13 ++++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/config.h b/config.h index 66f7e71..be20c33 100644 --- a/config.h +++ b/config.h @@ -56,6 +56,7 @@ #if defined __SVR4 && defined __sun # define HAVE_SHA_CRYPT # define HAVE_SOLARIS_CRYPT_GENSALT +# define CRYPT_GENSALT_IMPLEMENTS_DEFAULT_PREFIX #endif /* FIXME: which systems lack this? */ diff --git a/mkpasswd.c b/mkpasswd.c index 3b3406c..26f28d4 100644 --- a/mkpasswd.c +++ b/mkpasswd.c @@ -83,6 +83,9 @@ struct crypt_method { static const struct crypt_method methods[] = { /* method prefix minlen, maxlen rounds description */ +#ifdef CRYPT_GENSALT_IMPLEMENTS_DEFAULT_PREFIX + { "auto", NULL, 0, 0, 0, NULL }, +#endif { "des", "", 2, 2, 0, N_("standard 56 bit DES-based crypt(3)") }, { "md5", "$1$", 8, 8, 0, "MD5" }, @@ -229,14 +232,17 @@ int main(int argc, char *argv[]) display_help(EXIT_FAILURE); } - /* default: DES password */ + /* default: DES password, or else whatever crypt_gensalt chooses */ if (!salt_prefix) { salt_minlen = methods[0].minlen; salt_maxlen = methods[0].maxlen; salt_prefix = methods[0].prefix; + rounds_support = methods[0].rounds; } - if (streq(salt_prefix, "$2a$") || streq(salt_prefix, "$2y$")) { + if (!salt_prefix) { + /* NULL means that crypt_gensalt will choose one later */ + } else if (streq(salt_prefix, "$2a$") || streq(salt_prefix, "$2b$")) { /* OpenBSD Blowfish and derivatives */ if (rounds <= 5) rounds = 5; @@ -492,7 +498,8 @@ void display_methods(void) printf(_("Available methods:\n")); for (i = 0; methods[i].method != NULL; i++) - printf("%s\t%s\n", methods[i].method, methods[i].desc); + if (methods[i].desc) + printf("%s\t%s\n", methods[i].method, methods[i].desc); } char *read_line(FILE *fp) { From 22002f67be6bbb6720a277c62c099f841010d68e Mon Sep 17 00:00:00 2001 From: Marco d'Itri Date: Tue, 11 Sep 2018 01:25:13 +0200 Subject: [PATCH 10/33] mkpasswd.1: clarify that --rounds without --method makes no sense On old systems it will be ignored because descrypt does not support changing the number of rounds, while on newer systems the default method may change depending on the local configuration. --- mkpasswd.1 | 1 + 1 file changed, 1 insertion(+) diff --git a/mkpasswd.1 b/mkpasswd.1 index db7db47..86a949c 100644 --- a/mkpasswd.1 +++ b/mkpasswd.1 @@ -20,6 +20,7 @@ Use the \fISTRING\fP as salt. It must not contain prefixes such as \fI$1$\fP. Use \fINUMBER\fP rounds. This argument is ignored if the method chosen does not support variable rounds. For the OpenBSD Blowfish method this is the logarithm of the number of rounds. +The behavior is undefined if this option is used without \fI--method\fP. .TP .B -m, --method=TYPE Compute the password using the \fITYPE\fP method. From d4d7cd109615e8ae3d7b3b093fc174b572cae3c2 Mon Sep 17 00:00:00 2001 From: Marco d'Itri Date: Tue, 11 Sep 2018 01:23:42 +0200 Subject: [PATCH 11/33] mkpasswd: fix rounds support for bcrypt 2x and 2y --- mkpasswd.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/mkpasswd.c b/mkpasswd.c index 26f28d4..2d474ff 100644 --- a/mkpasswd.c +++ b/mkpasswd.c @@ -92,16 +92,16 @@ static const struct crypt_method methods[] = { #if defined OpenBSD || defined FreeBSD || (defined __SVR4 && defined __sun) # if (defined OpenBSD && OpenBSD >= 201405) /* http://marc.info/?l=openbsd-misc&m=139320023202696 */ - { "bf", "$2b$", 22, 22, 1, "Blowfish" }, - { "bfa", "$2a$", 22, 22, 1, "Blowfish (obsolete $2a$ version)" }, + { "bf", "$2b$", 22, 22, 2, "Blowfish" }, + { "bfa", "$2a$", 22, 22, 2, "Blowfish (obsolete $2a$ version)" }, # else - { "bf", "$2a$", 22, 22, 1, "Blowfish" }, + { "bf", "$2a$", 22, 22, 2, "Blowfish" }, # endif #endif #if defined HAVE_LINUX_CRYPT_GENSALT - { "bf", "$2a$", 22, 22, 1, "Blowfish, system-specific on 8-bit chars" }, + { "bf", "$2a$", 22, 22, 2, "Blowfish, system-specific on 8-bit chars" }, /* algorithm 2y fixes CVE-2011-2483 */ - { "bfy", "$2y$", 22, 22, 1, "Blowfish, correct handling of 8-bit chars" }, + { "bfy", "$2y$", 22, 22, 2, "Blowfish, correct handling of 8-bit chars" }, #endif #if defined FreeBSD { "nt", "$3$", 0, 0, 0, "NT-Hash" }, @@ -242,11 +242,11 @@ int main(int argc, char *argv[]) if (!salt_prefix) { /* NULL means that crypt_gensalt will choose one later */ - } else if (streq(salt_prefix, "$2a$") || streq(salt_prefix, "$2b$")) { - /* OpenBSD Blowfish and derivatives */ + } else if (rounds_support == 2) { + /* bcrypt strings always contain the rounds number */ if (rounds <= 5) rounds = 5; - /* actually for 2a/2y it is the logarithm of the number of rounds */ + /* actually it is the logarithm of the number of rounds */ snprintf(rounds_str, sizeof(rounds_str), "%02u$", rounds); } else if (rounds_support && rounds) snprintf(rounds_str, sizeof(rounds_str), "rounds=%u$", rounds); From c12ad950fa1087acabc4056829cce73d9b29c4d8 Mon Sep 17 00:00:00 2001 From: Marco d'Itri Date: Sun, 16 Sep 2018 03:57:31 +0200 Subject: [PATCH 12/33] config.h: fix the usage of __GLIBC__ vs. linux gettext is a feature of the libc, while /dev/random is a feature of Linux. --- config.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config.h b/config.h index be20c33..be0aba4 100644 --- a/config.h +++ b/config.h @@ -17,7 +17,7 @@ # include #endif -#ifdef linux +#ifdef __GLIBC__ # define ENABLE_NLS #endif @@ -67,7 +67,7 @@ * and add more systems which have one. */ #ifdef RANDOM_DEVICE -#elif defined __GLIBC__ \ +#elif defined linux \ || defined __FreeBSD__ || defined __NetBSD__ || defined __OpenBSD__ \ /* AIX >= 5.2? */ \ || defined _AIX52 \ From ae31f61a34ed52740fd45f6c3f7821e51caab521 Mon Sep 17 00:00:00 2001 From: Marco d'Itri Date: Sun, 16 Sep 2018 04:34:58 +0200 Subject: [PATCH 13/33] mkpasswd: include crypt.h on Solaris --- Makefile | 4 ++-- config.h | 1 + mkpasswd.c | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index bd12220..0cd8cfa 100644 --- a/Makefile +++ b/Makefile @@ -52,14 +52,14 @@ DEFS += -DHAVE_ICONV endif ifeq ($(shell $(PKG_CONFIG) --exists 'libxcrypt >= 4.1' || echo NO),) -DEFS += -DHAVE_LINUX_CRYPT_GENSALT $(shell $(PKG_CONFIG) --cflags libcrypt) +DEFS += -DHAVE_CRYPT_H -DHAVE_LINUX_CRYPT_GENSALT $(shell $(PKG_CONFIG) --cflags libcrypt) mkpasswd_LDADD += $(shell $(PKG_CONFIG) --libs libcrypt) else ifdef HAVE_XCRYPT DEFS += -DHAVE_XCRYPT_H -DHAVE_LINUX_CRYPT_GENSALT mkpasswd_LDADD += -lxcrypt else ifdef HAVE_LIBOWCRYPT # owl and openSUSE have crypt_gensalt(3) in libowcrypt -DEFS += -DHAVE_LINUX_CRYPT_GENSALT -D_OW_SOURCE +DEFS += -DHAVE_CRYPT_H -DHAVE_LINUX_CRYPT_GENSALT -D_OW_SOURCE mkpasswd_LDADD += -lcrypt -lowcrypt else mkpasswd_LDADD += -lcrypt diff --git a/config.h b/config.h index be0aba4..254f496 100644 --- a/config.h +++ b/config.h @@ -55,6 +55,7 @@ /* Unknown versions of Solaris */ #if defined __SVR4 && defined __sun # define HAVE_SHA_CRYPT +# define HAVE_CRYPT_H # define HAVE_SOLARIS_CRYPT_GENSALT # define CRYPT_GENSALT_IMPLEMENTS_DEFAULT_PREFIX #endif diff --git a/mkpasswd.c b/mkpasswd.c index 2d474ff..b7a313d 100644 --- a/mkpasswd.c +++ b/mkpasswd.c @@ -39,7 +39,7 @@ #include #include #endif -#ifdef HAVE_LINUX_CRYPT_GENSALT +#ifdef HAVE_CRYPT_H #include #endif #ifdef HAVE_GETTIMEOFDAY From b2ae96cf3fbc419533e799c4559f1569b3b527e3 Mon Sep 17 00:00:00 2001 From: Marco d'Itri Date: Wed, 10 Oct 2018 01:12:27 +0200 Subject: [PATCH 14/33] mkpasswd: adopt the John the Ripper naming of hash types And add hidden compatibility aliases for the old ones. (Except than the bcrypt variants, since there is no proof that anybody ever used this program for them.) See https://github.com/besser82/libxcrypt/pull/26 for more information. --- mkpasswd.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/mkpasswd.c b/mkpasswd.c index b7a313d..0c2a8ac 100644 --- a/mkpasswd.c +++ b/mkpasswd.c @@ -86,30 +86,30 @@ static const struct crypt_method methods[] = { #ifdef CRYPT_GENSALT_IMPLEMENTS_DEFAULT_PREFIX { "auto", NULL, 0, 0, 0, NULL }, #endif - { "des", "", 2, 2, 0, + { "descrypt", "", 2, 2, 0, N_("standard 56 bit DES-based crypt(3)") }, - { "md5", "$1$", 8, 8, 0, "MD5" }, -#if defined OpenBSD || defined FreeBSD || (defined __SVR4 && defined __sun) -# if (defined OpenBSD && OpenBSD >= 201405) + { "md5crypt", "$1$", 8, 8, 0, "MD5" }, + /* compatibility aliases for mkpasswd versions < 5.4.0 */ + { "des", "", 2, 2, 0, NULL }, + { "md5", "$1$", 8, 8, 0, NULL }, +#ifdef HAVE_BCRYPT_OBSOLETE /* http://marc.info/?l=openbsd-misc&m=139320023202696 */ - { "bf", "$2b$", 22, 22, 2, "Blowfish" }, - { "bfa", "$2a$", 22, 22, 2, "Blowfish (obsolete $2a$ version)" }, -# else - { "bf", "$2a$", 22, 22, 2, "Blowfish" }, -# endif + { "bf", "$2a$", 22, 22, 2, "bcrypt" }, #endif -#if defined HAVE_LINUX_CRYPT_GENSALT - { "bf", "$2a$", 22, 22, 2, "Blowfish, system-specific on 8-bit chars" }, - /* algorithm 2y fixes CVE-2011-2483 */ - { "bfy", "$2y$", 22, 22, 2, "Blowfish, correct handling of 8-bit chars" }, +#ifdef HAVE_BCRYPT + { "bcrypt", "$2b$", 22, 22, 2, "bcrypt" }, + { "bcrypt-a", "$2a$", 22, 22, 2, "bcrypt (obsolete $2a$ version)" }, #endif #if defined FreeBSD { "nt", "$3$", 0, 0, 0, "NT-Hash" }, #endif #if defined HAVE_SHA_CRYPT /* http://people.redhat.com/drepper/SHA-crypt.txt */ - { "sha-256", "$5$", 8, 16, 1, "SHA-256" }, - { "sha-512", "$6$", 8, 16, 1, "SHA-512" }, + { "sha256crypt", "$5$", 8, 16, 1, "SHA-256" }, + { "sha512crypt", "$6$", 8, 16, 1, "SHA-512" }, + /* compatibility aliases for mkpasswd versions < 5.4.0 */ + { "sha-256", "$5$", 8, 16, 1, NULL }, + { "sha-512", "$6$", 8, 16, 1, NULL }, #endif /* http://www.crypticide.com/dropsafe/article/1389 */ /* From b91c9057da1264114e2c757695de7152e4f37cee Mon Sep 17 00:00:00 2001 From: Marco d'Itri Date: Sun, 14 Oct 2018 01:14:09 +0200 Subject: [PATCH 15/33] mkpasswd: correctly print the available methods as columns --- mkpasswd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkpasswd.c b/mkpasswd.c index 0c2a8ac..afca2f7 100644 --- a/mkpasswd.c +++ b/mkpasswd.c @@ -499,7 +499,7 @@ void display_methods(void) printf(_("Available methods:\n")); for (i = 0; methods[i].method != NULL; i++) if (methods[i].desc) - printf("%s\t%s\n", methods[i].method, methods[i].desc); + printf("%-15s %s\n", methods[i].method, methods[i].desc); } char *read_line(FILE *fp) { From 4362ef1fc4ad2889c0c13c02cc1953bb2ce161ec Mon Sep 17 00:00:00 2001 From: Marco d'Itri Date: Sun, 14 Oct 2018 02:33:13 +0200 Subject: [PATCH 16/33] mkpasswd: reorder the hash types From the most secure to the less, accordingly to libxcrypt's crypt(5). --- mkpasswd.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/mkpasswd.c b/mkpasswd.c index afca2f7..78bef2d 100644 --- a/mkpasswd.c +++ b/mkpasswd.c @@ -86,9 +86,6 @@ static const struct crypt_method methods[] = { #ifdef CRYPT_GENSALT_IMPLEMENTS_DEFAULT_PREFIX { "auto", NULL, 0, 0, 0, NULL }, #endif - { "descrypt", "", 2, 2, 0, - N_("standard 56 bit DES-based crypt(3)") }, - { "md5crypt", "$1$", 8, 8, 0, "MD5" }, /* compatibility aliases for mkpasswd versions < 5.4.0 */ { "des", "", 2, 2, 0, NULL }, { "md5", "$1$", 8, 8, 0, NULL }, @@ -100,16 +97,22 @@ static const struct crypt_method methods[] = { { "bcrypt", "$2b$", 22, 22, 2, "bcrypt" }, { "bcrypt-a", "$2a$", 22, 22, 2, "bcrypt (obsolete $2a$ version)" }, #endif -#if defined FreeBSD - { "nt", "$3$", 0, 0, 0, "NT-Hash" }, -#endif #if defined HAVE_SHA_CRYPT /* http://people.redhat.com/drepper/SHA-crypt.txt */ - { "sha256crypt", "$5$", 8, 16, 1, "SHA-256" }, { "sha512crypt", "$6$", 8, 16, 1, "SHA-512" }, + { "sha256crypt", "$5$", 8, 16, 1, "SHA-256" }, /* compatibility aliases for mkpasswd versions < 5.4.0 */ { "sha-256", "$5$", 8, 16, 1, NULL }, { "sha-512", "$6$", 8, 16, 1, NULL }, +#endif +#if defined __SVR4 && defined __sun + { "sunmd5", "$md5$", 8, 8, 1, "SunMD5" }, +#endif + { "md5crypt", "$1$", 8, 8, 0, "MD5" }, + { "descrypt", "", 2, 2, 0, + N_("standard 56 bit DES-based crypt(3)") }, +#if defined FreeBSD + { "nt", "$3$", 0, 0, 0, "NT-Hash" }, #endif /* http://www.crypticide.com/dropsafe/article/1389 */ /* @@ -118,9 +121,6 @@ static const struct crypt_method methods[] = { * http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/ \ * usr/src/lib/crypt_modules/sunmd5/sunmd5.c#crypt_gensalt_impl */ -#if defined __SVR4 && defined __sun - { "sunmd5", "$md5$", 8, 8, 1, "SunMD5" }, -#endif { NULL, NULL, 0, 0, 0, NULL } }; From 388d5757c42af3b3a125dc193f5aca92252558a1 Mon Sep 17 00:00:00 2001 From: Marco d'Itri Date: Sun, 14 Oct 2018 02:38:36 +0200 Subject: [PATCH 17/33] mkpasswd: enable bcrypt if supported by the OS --- config.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/config.h b/config.h index 254f496..16524e3 100644 --- a/config.h +++ b/config.h @@ -52,6 +52,12 @@ # endif #endif +#if defined OpenBSD && OpenBSD < 201405 +# define HAVE_BCRYPT_OBSOLETE +#elif defined OpenBSD || defined __FreeBSD__ || (defined __SVR4 && defined __sun) || defined _OW_SOURCE +# define HAVE_BCRYPT +#endif + /* Unknown versions of Solaris */ #if defined __SVR4 && defined __sun # define HAVE_SHA_CRYPT From 88a7462301b584232937d3210748c1bad6b7ffd2 Mon Sep 17 00:00:00 2001 From: Marco d'Itri Date: Sun, 14 Oct 2018 03:13:07 +0200 Subject: [PATCH 18/33] mkpasswd: support the other hash types in libxcrypt Among them scrypt and bcrypt. --- config.h | 5 +++++ mkpasswd.c | 19 +++++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/config.h b/config.h index 16524e3..19224f8 100644 --- a/config.h +++ b/config.h @@ -40,6 +40,7 @@ #if defined __APPLE__ && defined __MACH__ # define HAVE_GETOPT_LONG # define HAVE_GETADDRINFO +# define HAVE_BSDICRYPT #endif #if defined __GLIBC__ @@ -58,6 +59,10 @@ # define HAVE_BCRYPT #endif +#if defined OpenBSD || defined __FreeBSD__ || defined __NetBSD__ +# define HAVE_BSDICRYPT +#endif + /* Unknown versions of Solaris */ #if defined __SVR4 && defined __sun # define HAVE_SHA_CRYPT diff --git a/mkpasswd.c b/mkpasswd.c index 78bef2d..b2a4b95 100644 --- a/mkpasswd.c +++ b/mkpasswd.c @@ -81,6 +81,13 @@ struct crypt_method { const char *desc; /* long description for the methods list */ }; +/* XCRYPT_VERSION_NUM is defined in crypt.h from libxcrypt */ +#if defined XCRYPT_VERSION_NUM +# define HAVE_SHA_CRYPT +# define HAVE_BCRYPT +# define HAVE_BSDICRYPT +#endif + static const struct crypt_method methods[] = { /* method prefix minlen, maxlen rounds description */ #ifdef CRYPT_GENSALT_IMPLEMENTS_DEFAULT_PREFIX @@ -89,6 +96,10 @@ static const struct crypt_method methods[] = { /* compatibility aliases for mkpasswd versions < 5.4.0 */ { "des", "", 2, 2, 0, NULL }, { "md5", "$1$", 8, 8, 0, NULL }, +#if defined XCRYPT_VERSION_NUM + { "yescrypt", "$y$", 0, 0, 0, "Yescrypt" }, + { "scrypt", "$7$", 0, 0, 0, "scrypt" }, +#endif #ifdef HAVE_BCRYPT_OBSOLETE /* http://marc.info/?l=openbsd-misc&m=139320023202696 */ { "bf", "$2a$", 22, 22, 2, "bcrypt" }, @@ -105,13 +116,17 @@ static const struct crypt_method methods[] = { { "sha-256", "$5$", 8, 16, 1, NULL }, { "sha-512", "$6$", 8, 16, 1, NULL }, #endif -#if defined __SVR4 && defined __sun +#if (defined __SVR4 && defined __sun) || defined XCRYPT_VERSION_NUM { "sunmd5", "$md5$", 8, 8, 1, "SunMD5" }, #endif { "md5crypt", "$1$", 8, 8, 0, "MD5" }, +#ifdef HAVE_BSDICRYPT + { "bsdicrypt", "_", 0, 0, 0, + N_("BSDI extended DES-based crypt(3)") }, +#endif { "descrypt", "", 2, 2, 0, N_("standard 56 bit DES-based crypt(3)") }, -#if defined FreeBSD +#if defined FreeBSD || defined XCRYPT_VERSION_NUM { "nt", "$3$", 0, 0, 0, "NT-Hash" }, #endif /* http://www.crypticide.com/dropsafe/article/1389 */ From f18cfbdfea287053e4a558270b4b2435dcbfffb0 Mon Sep 17 00:00:00 2001 From: Marco d'Itri Date: Sun, 14 Oct 2018 03:14:07 +0200 Subject: [PATCH 19/33] debian/control: update the policy version --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control b/debian/control index 63e1704..642ec2e 100644 --- a/debian/control +++ b/debian/control @@ -2,7 +2,7 @@ Source: whois Section: net Priority: standard Maintainer: Marco d'Itri -Standards-Version: 4.1.2 +Standards-Version: 4.2.1 Rules-Requires-Root: no Build-Depends: debhelper (>= 9), gettext, libidn2-dev (>= 2.0.3) Vcs-Git: git://github.com/rfc1036/whois.git From 80c36bb8e584758def534fc2520a40447007422d Mon Sep 17 00:00:00 2001 From: Marco d'Itri Date: Sun, 14 Oct 2018 03:18:54 +0200 Subject: [PATCH 20/33] Update the .gp server --- tld_serv_list | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tld_serv_list b/tld_serv_list index a3e574a..43cd7db 100644 --- a/tld_serv_list +++ b/tld_serv_list @@ -155,7 +155,7 @@ .gl whois.nic.gl .gm WEB http://www.nic.gm/htmlpages/whois.htm .gn NONE # http://www.psg.com/dns/gn/ -.gp WEB https://www.dom-enic.com/whois.html +.gp whois.nic.gp .gq whois.dominio.gq .gr WEB https://grweb.ics.forth.gr/public/whois .gs whois.nic.gs From 4d24d493ff9e2e706a9d025b33956e8764a87c01 Mon Sep 17 00:00:00 2001 From: Marco d'Itri Date: Sun, 14 Oct 2018 03:41:14 +0200 Subject: [PATCH 21/33] mkpasswd: implement a generic way to provide the hash type --- mkpasswd.1 | 4 ++++ mkpasswd.c | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/mkpasswd.1 b/mkpasswd.1 index 86a949c..21555ad 100644 --- a/mkpasswd.1 +++ b/mkpasswd.1 @@ -25,6 +25,8 @@ The behavior is undefined if this option is used without \fI--method\fP. .B -m, --method=TYPE Compute the password using the \fITYPE\fP method. If \fITYPE\fP is \fIhelp\fP then the available methods are printed. +If \fITYPE\fP begins and end with \fI$\fP characters then the string +is passed to \fIcrypt_gensalt(3)\fP as-is. .TP .B -5 Like \fI--method=md5\fP. @@ -50,6 +52,8 @@ This programs suffers of a bad case of featuritis. .IR passwd(1), .IR passwd(5), .IR crypt(3), +.IR crypt(5), +.IR crypt_gensalt(3), .IR getpass(3) .SH AUTHOR .B mkpasswd diff --git a/mkpasswd.c b/mkpasswd.c index b2a4b95..00e839b 100644 --- a/mkpasswd.c +++ b/mkpasswd.c @@ -181,6 +181,17 @@ int main(int argc, char *argv[]) display_methods(); exit(0); } +#if defined HAVE_LINUX_CRYPT_GENSALT || defined HAVE_SOLARIS_CRYPT_GENSALT + if (optarg[0] == '$' + && strlen(optarg) > 2 + && *(optarg + strlen(optarg) - 1) == '$') { + salt_prefix = NOFAIL(strdup(optarg)); + salt_minlen = 0; + salt_maxlen = 0; + rounds_support = 0; + break; + } +#endif for (i = 0; methods[i].method != NULL; i++) if (strcaseeq(methods[i].method, optarg)) { salt_prefix = methods[i].prefix; From 4723a2cc4c7c49cd06a11dd07d5f7335e1608cea Mon Sep 17 00:00:00 2001 From: Marco d'Itri Date: Fri, 26 Oct 2018 18:35:09 +0200 Subject: [PATCH 22/33] Debian changelog for 5.4.0 --- debian/changelog | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/debian/changelog b/debian/changelog index 01980df..32f236a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,16 @@ +whois (5.4.0) unstable; urgency=medium + + * Added support for the new libxcrypt 4.x. + This allows mkpasswd to support many modern password hash methods. + * Renamed the hash types (i.e. the arguments to -H) to use the naming + convention established by John the Ripper. + * Made mkpasswd use entropy gathered by crypt_gensalt(3), when available. + * Fixed many portability bugs in mkpasswd. + * Added the .gp TLD server. + * Updated the list of new gTLDs. + + -- Marco d'Itri Fri, 26 Oct 2018 18:32:49 +0200 + whois (5.3.2) unstable; urgency=medium * Added the .ge TLD server. From b3e5be673b827ea68875e12cbef40d6f751e7f85 Mon Sep 17 00:00:00 2001 From: Marco d'Itri Date: Sun, 27 Jan 2019 04:37:27 +0100 Subject: [PATCH 23/33] Update the .mw server --- tld_serv_list | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tld_serv_list b/tld_serv_list index 43cd7db..27b74e9 100644 --- a/tld_serv_list +++ b/tld_serv_list @@ -224,7 +224,7 @@ .mt WEB https://www.nic.org.mt/dotmt/ # whois.nic.org.mt is restricted .mu whois.nic.mu .mv NONE # NIC? www.dhiraagu.com.mv -.mw WEB http://www.registrar.mw/ +.mw whois.nic.mw .mx whois.mx .my whois.mynic.my .mz whois.nic.mz From c7e615c35049e82fd259107c73fcbd40d95dc5a4 Mon Sep 17 00:00:00 2001 From: Jakub Bogusz Date: Sun, 27 Jan 2019 04:46:40 +0100 Subject: [PATCH 24/33] Updated debconf translation: pl.po --- po/pl.po | 68 ++++++++++++++++++++++++++++++-------------------------- 1 file changed, 36 insertions(+), 32 deletions(-) diff --git a/po/pl.po b/po/pl.po index 48ef588..fa7ba40 100644 --- a/po/pl.po +++ b/po/pl.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: whois 5.0.24\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-10 04:23+0200\n" +"POT-Creation-Date: 2018-11-30 20:58+0100\n" "PO-Revision-Date: 2013-04-11 17:48+0200\n" "Last-Translator: Jakub Bogusz \n" "Language-Team: Polish \n" @@ -18,7 +18,7 @@ msgstr "" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2;\n" -#: ../whois.c:148 +#: ../whois.c:233 #, c-format msgid "" "Version %s.\n" @@ -29,29 +29,29 @@ msgstr "" "\n" "Błędy proszę zgłaszać na adres %s.\n" -#: ../whois.c:202 ../whois.c:255 ../whois.c:261 ../whois.c:291 +#: ../whois.c:287 ../whois.c:340 ../whois.c:347 ../whois.c:390 #, c-format msgid "Using server %s.\n" msgstr "Użycie serwera %s.\n" -#: ../whois.c:240 +#: ../whois.c:325 msgid "This TLD has no whois server, but you can access the whois database at" -msgstr "" +msgstr "Ta główna domena nie ma serwera whois, ale można użyć bazy danych whois pod" -#: ../whois.c:245 +#: ../whois.c:330 msgid "This TLD has no whois server." msgstr "Ta główna domena nie ma serwera whois." -#: ../whois.c:248 +#: ../whois.c:333 msgid "No whois server is known for this kind of object." msgstr "Dla tego rodzaju obiektu nie jest znany żaden serwer whois." -#: ../whois.c:251 +#: ../whois.c:336 msgid "Unknown AS number or IP network. Please upgrade this program." msgstr "Nieznany numer AS lub sieć IP. Proszę uaktualnić ten program." -#: ../whois.c:267 +#: ../whois.c:354 #, c-format msgid "" "\n" @@ -62,7 +62,7 @@ msgstr "" "Pytanie o zakończenie IPv4 %s adresu IPv6 typu 6to4.\n" "\n" -#: ../whois.c:273 +#: ../whois.c:361 #, c-format msgid "" "\n" @@ -73,7 +73,7 @@ msgstr "" "Pytanie o zakończenie IPv4 %s adresu IPv6 Teredo.\n" "\n" -#: ../whois.c:292 +#: ../whois.c:391 #, c-format msgid "" "Query string: \"%s\"\n" @@ -82,7 +82,7 @@ msgstr "" "Zapytanie: \"%s\"\n" "\n" -#: ../whois.c:302 +#: ../whois.c:401 #, c-format msgid "" "\n" @@ -95,16 +95,16 @@ msgstr "" "Znaleziono odniesienie do %s.\n" "\n" -#: ../whois.c:344 ../whois.c:347 +#: ../whois.c:443 ../whois.c:446 #, c-format msgid "Cannot parse this line: %s" msgstr "Nie można przeanalizować tej linii: %s" -#: ../whois.c:516 +#: ../whois.c:635 msgid "Warning: RIPE flags used with a traditional server." msgstr "Uwaga: użyto flag RIPE ze starszym serwerem." -#: ../whois.c:675 ../whois.c:773 +#: ../whois.c:805 ../whois.c:921 msgid "" "Catastrophic error: disclaimer text has been changed.\n" "Please upgrade this program.\n" @@ -112,26 +112,26 @@ msgstr "" "Katastrofa! Tekst oświadczenia został zmieniony.\n" "Proszę uaktualnić ten program.\n" -#: ../whois.c:828 +#: ../whois.c:985 #, c-format msgid "Host %s not found." msgstr "Serwer %s nie został znaleziony." -#: ../whois.c:838 +#: ../whois.c:995 #, c-format msgid "%s/tcp: unknown service" msgstr "%s/tcp: usługa nieznana" -#: ../whois.c:913 +#: ../whois.c:1070 msgid "Timeout." msgstr "Upłynął limit czasu." -#: ../whois.c:919 +#: ../whois.c:1076 #, c-format msgid "Interrupted by signal %d..." msgstr "Przerwano sygnałem %d..." -#: ../whois.c:1189 +#: ../whois.c:1444 #, c-format msgid "" "Usage: whois [OPTION]... OBJECT...\n" @@ -201,27 +201,31 @@ msgstr "" "-v TYP żądanie szczegółowego szablonu dla obiektu podanego TYPU\n" "-q [version|sources|types] zapytanie serwera o podane informacje\n" -#: ../mkpasswd.c:84 +#: ../mkpasswd.c:125 +msgid "BSDI extended DES-based crypt(3)" +msgstr "oparta o DES rozszerzona funkcja crypt(3) BSDI" + +#: ../mkpasswd.c:128 msgid "standard 56 bit DES-based crypt(3)" msgstr "standardowa 56-bitowa, oparta o DES funkcja crypt(3)" -#: ../mkpasswd.c:165 +#: ../mkpasswd.c:204 #, c-format msgid "Invalid method '%s'.\n" msgstr "Nieprawidłowa metoda '%s'.\n" -#: ../mkpasswd.c:174 ../mkpasswd.c:184 +#: ../mkpasswd.c:213 ../mkpasswd.c:225 #, c-format msgid "Invalid number '%s'.\n" msgstr "Nieprawidłowa liczba '%s'.\n" -#: ../mkpasswd.c:201 +#: ../mkpasswd.c:243 #, c-format msgid "Try '%s --help' for more information.\n" msgstr "'%s --help' poda więcej informacji.\n" # : ../mkpasswd.c:152 -#: ../mkpasswd.c:242 +#: ../mkpasswd.c:287 #, c-format msgid "Wrong salt length: %d byte when %d expected.\n" msgid_plural "Wrong salt length: %d bytes when %d expected.\n" @@ -230,7 +234,7 @@ msgstr[1] "B msgstr[2] "Błędna długość zarodka: %d bajtów kiedy oczekiwano %d.\n" # : ../mkpasswd.c:152 -#: ../mkpasswd.c:247 +#: ../mkpasswd.c:292 #, c-format msgid "Wrong salt length: %d byte when %d <= n <= %d expected.\n" msgid_plural "Wrong salt length: %d bytes when %d <= n <= %d expected.\n" @@ -238,22 +242,22 @@ msgstr[0] "B msgstr[1] "Błędna długość zarodka: %d bajty kiedy oczekiwano %d <= n <= %d.\n" msgstr[2] "Błędna długość zarodka: %d bajtów kiedy oczekiwano %d <= n <= %d.\n" -#: ../mkpasswd.c:256 +#: ../mkpasswd.c:301 #, c-format msgid "Illegal salt character '%c'.\n" msgstr "Błędny znak zarodka '%c'.\n" -#: ../mkpasswd.c:306 ../mkpasswd.c:322 +#: ../mkpasswd.c:352 ../mkpasswd.c:365 #, c-format msgid "Password: " msgstr "Hasło: " -#: ../mkpasswd.c:340 +#: ../mkpasswd.c:384 #, c-format msgid "Method not supported by crypt(3).\n" msgstr "Metoda nie obsługiwana przez crypt(3).\n" -#: ../mkpasswd.c:419 +#: ../mkpasswd.c:492 #, c-format msgid "" "Usage: mkpasswd [OPTIONS]... [PASSWORD [SALT]]\n" @@ -264,7 +268,7 @@ msgstr "" "Koduje HASŁO przy użyciu funkcji crypt(3).\n" "\n" -#: ../mkpasswd.c:422 +#: ../mkpasswd.c:495 #, c-format msgid "" " -m, --method=TYPE select method TYPE\n" @@ -300,7 +304,7 @@ msgstr "" "\n" "Błędy proszę zgłaszać na adres %s.\n" -#: ../mkpasswd.c:452 +#: ../mkpasswd.c:525 #, c-format msgid "Available methods:\n" msgstr "Dostępne metody:\n" From b177477d6ee6edd22982fbd33d600702169b7399 Mon Sep 17 00:00:00 2001 From: Marco d'Itri Date: Sun, 27 Jan 2019 04:49:34 +0100 Subject: [PATCH 25/33] debian/control: update the policy version --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control b/debian/control index 642ec2e..c13f517 100644 --- a/debian/control +++ b/debian/control @@ -2,7 +2,7 @@ Source: whois Section: net Priority: standard Maintainer: Marco d'Itri -Standards-Version: 4.2.1 +Standards-Version: 4.3.0.1 Rules-Requires-Root: no Build-Depends: debhelper (>= 9), gettext, libidn2-dev (>= 2.0.3) Vcs-Git: git://github.com/rfc1036/whois.git From 14810cc3b7335cd890aa544bdbc8ee62be7b66b5 Mon Sep 17 00:00:00 2001 From: Marco d'Itri Date: Sun, 27 Jan 2019 04:49:04 +0100 Subject: [PATCH 26/33] Debian changelog for 5.4.1 --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index 32f236a..706a170 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +whois (5.4.1) unstable; urgency=medium + + * Added the .mw TLD server. + * Updated one or more translations. + + -- Marco d'Itri Sun, 27 Jan 2019 04:48:53 +0100 + whois (5.4.0) unstable; urgency=medium * Added support for the new libxcrypt 4.x. From 6487b3640b6060107c298f49fda39270d6eda08b Mon Sep 17 00:00:00 2001 From: Romuald Brunet Date: Wed, 31 Oct 2018 10:25:25 +0100 Subject: [PATCH 27/33] Update the .fm server --- tld_serv_list | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tld_serv_list b/tld_serv_list index 27b74e9..31b549c 100644 --- a/tld_serv_list +++ b/tld_serv_list @@ -141,7 +141,7 @@ .fi whois.fi .fj whois.usp.ac.fj .fk NONE # http://www.fidc.co.fk/ -.fm WEB http://dot.fm/whois/ +.fm whois.nic.fm .fo whois.nic.fo .fr whois.nic.fr .ga whois.dot.ga # www.my.ga From a84db90864af6322a151438d7587ff665ba217b9 Mon Sep 17 00:00:00 2001 From: kovalkov Date: Thu, 31 Jan 2019 13:50:09 +0300 Subject: [PATCH 28/33] Remove duplicate "Using server" line when a config file is used --- whois.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/whois.c b/whois.c index a784e8d..d9b6473 100644 --- a/whois.c +++ b/whois.c @@ -281,11 +281,8 @@ int main(int argc, char *argv[]) } #ifdef CONFIG_FILE - if (!server) { + if (!server) server = match_config_file(qstring); - if (verb && server) - printf(_("Using server %s.\n"), server); - } #endif if (!server) From 5f5100872001851b7573ce362132b454e157a9fa Mon Sep 17 00:00:00 2001 From: Anivar Aravind Date: Mon, 25 Mar 2019 15:33:46 +0530 Subject: [PATCH 29/33] Update the .in TLD server (and related IDN TLDs) The .in registry changed from Afilias to Neustar. --- tld_serv_list | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/tld_serv_list b/tld_serv_list index 31b549c..7aad9b9 100644 --- a/tld_serv_list +++ b/tld_serv_list @@ -173,7 +173,7 @@ .ie whois.iedr.ie .il whois.isoc.org.il .im whois.nic.im -.in whois.inregistry.net # afilias +.in whois.registry.in .io whois.nic.io .iq whois.cmc.iq # http://www.cmc.iq/en/iq.html .ir whois.nic.ir @@ -350,11 +350,11 @@ # AW means that I had to guess the whois server name, but I was not able # to find any registered subdomains to verify it. -.xn--2scrj9c whois.inregistry.net # India +.xn--2scrj9c whois.registry.in # India .xn--3e0b707e whois.kr # Korea, Republic of -.xn--3hcrj9c whois.inregistry.net # India -.xn--45br5cyl whois.inregistry.net # India -.xn--45brj9c whois.inregistry.net # India, Bengali AW +.xn--3hcrj9c whois.registry.in # India +.xn--45br5cyl whois.registry.in # India +.xn--45brj9c whois.registry.in # India, Bengali AW .xn--54b7fta0cc NONE # Bangladesh .xn--80ao21a whois.nic.kz # Kazakhstan .xn--90a3ac whois.rnids.rs # Serbia @@ -365,12 +365,12 @@ .xn--e1a4c whois.eu # European Union, Cyrillic AW .xn--fiqs8s cwhois.cnnic.cn # China, Simplified Chinese .xn--fiqz9s cwhois.cnnic.cn # China, Traditional Chinese -.xn--fpcrj9c3d whois.inregistry.net # India, Telugu AW +.xn--fpcrj9c3d whois.registry.in # India, Telugu AW .xn--fzc2c9e2c whois.nic.lk # Sri Lanka, Sinhala -.xn--gecrj9c whois.inregistry.net # India, Gujarati AW -.xn--h2breg3eve whois.inregistry.net # India -.xn--h2brj9c8c whois.inregistry.net # India -.xn--h2brj9c whois.inregistry.net # India, Hindi AW +.xn--gecrj9c whois.registry.in # India, Gujarati AW +.xn--h2breg3eve whois.registry.in # India +.xn--h2brj9c8c whois.registry.in # India +.xn--h2brj9c whois.registry.in # India, Hindi AW .xn--j1amh whois.dotukr.com # Ukraine .xn--j6w193g whois.hkirc.hk # Hong Kong .xn--kprw13d whois.twnic.net.tw # Taiwan, Simplified Chinese @@ -382,11 +382,11 @@ .xn--mgbaam7a8h whois.aeda.net.ae # United Arab Emirates .xn--mgbai9azgqp6j NONE # Pakistan .xn--mgbayh7gpa WEB http://idn.jo/whois_a.aspx # Jordan -.xn--mgbbh1a71e whois.inregistry.net # India, Urdu AW -.xn--mgbbh1a whois.inregistry.net # India +.xn--mgbbh1a71e whois.registry.in # India, Urdu AW +.xn--mgbbh1a whois.registry.in # India .xn--mgbc0a9azcg NONE # Morocco .xn--mgberp4a5d4ar whois.nic.net.sa # Saudi Arabia -.xn--mgbgu82a whois.inregistry.net # India +.xn--mgbgu82a whois.registry.in # India .xn--mgbpl2fh NONE # Sudan .xn--mgbtx2b whois.cmc.iq # Iraq .xn--mgbx4cd0ab whois.mynic.my # Malaysia AW @@ -397,12 +397,12 @@ .xn--p1ai whois.tcinet.ru # Russian Federation .xn--pgbs0dh NONE # Tunisia .xn--qxam WEB https://grweb.ics.forth.gr/public/whois.jsp?lang=en # Greece AW -.xn--rvc1e0am3e whois.inregistry.net # India -.xn--s9brj9c whois.inregistry.net # India, Punjabi AW +.xn--rvc1e0am3e whois.registry.in # India +.xn--s9brj9c whois.registry.in # India, Punjabi AW .xn--wgbh1c whois.dotmasr.eg # Egypt .xn--wgbl6a whois.registry.qa # Qatar .xn--xkc2al3hye2a whois.nic.lk # Sri Lanka, Tamil -.xn--xkc2dl3a5ee0h whois.inregistry.net # India, Tamil AW +.xn--xkc2dl3a5ee0h whois.registry.in # India, Tamil AW .xn--y9a3aq whois.amnic.net # Armenia .xn--yfro4i67o whois.sgnic.sg # Singapore, Chinese .xn--ygbi2ammx whois.pnina.ps # Palestinian Territory From a5902d5a187b1f61e9039c66332dd9888154ca12 Mon Sep 17 00:00:00 2001 From: Marco d'Itri Date: Thu, 28 Mar 2019 00:30:59 +0100 Subject: [PATCH 30/33] Add the .ss TLD server --- tld_serv_list | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tld_serv_list b/tld_serv_list index 7aad9b9..4e9448b 100644 --- a/tld_serv_list +++ b/tld_serv_list @@ -280,7 +280,7 @@ .sn whois.nic.sn .so whois.nic.so .sr NONE # www.register.sr -#.ss +.ss whois.nic.ss .st whois.nic.st .su whois.tcinet.ru .sv WEB http://www.svnet.org.sv/ From 5b942eb465ea49da486fb53a813e6ed98f639092 Mon Sep 17 00:00:00 2001 From: Marco d'Itri Date: Thu, 28 Mar 2019 00:36:23 +0100 Subject: [PATCH 31/33] Add the .xn--mgbah1a3hjkrd TLD server --- tld_serv_list | 1 + 1 file changed, 1 insertion(+) diff --git a/tld_serv_list b/tld_serv_list index 4e9448b..421daa5 100644 --- a/tld_serv_list +++ b/tld_serv_list @@ -380,6 +380,7 @@ .xn--mgb9awbf whois.registry.om # Oman .xn--mgba3a4f16a whois.nic.ir # Iran .xn--mgbaam7a8h whois.aeda.net.ae # United Arab Emirates +.xn--mgbah1a3hjkrd whois.nic.mr # Mauritania .xn--mgbai9azgqp6j NONE # Pakistan .xn--mgbayh7gpa WEB http://idn.jo/whois_a.aspx # Jordan .xn--mgbbh1a71e whois.registry.in # India, Urdu AW From 4631c3ba72d4694743423f1289fceb3e2ba727e9 Mon Sep 17 00:00:00 2001 From: Jakub Bogusz Date: Thu, 28 Mar 2019 00:39:16 +0100 Subject: [PATCH 32/33] Update pl.po --- po/pl.po | 168 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 90 insertions(+), 78 deletions(-) diff --git a/po/pl.po b/po/pl.po index fa7ba40..4d021cf 100644 --- a/po/pl.po +++ b/po/pl.po @@ -1,19 +1,19 @@ # Polish translation for whois. -# Michał 'CeFeK' Nazarewicz , 1999 -# Przemysław Knycz , 2003 -# Jakub Bogusz , 2003-2013 +# Michał 'CeFeK' Nazarewicz , 1999 +# Przemysław Knycz , 2003 +# Jakub Bogusz , 2003-2018 # msgid "" msgstr "" -"Project-Id-Version: whois 5.0.24\n" +"Project-Id-Version: whois 5.4.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-11-30 20:58+0100\n" -"PO-Revision-Date: 2013-04-11 17:48+0200\n" +"PO-Revision-Date: 2018-11-30 21:23+0100\n" "Last-Translator: Jakub Bogusz \n" "Language-Team: Polish \n" "Language: pl\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2;\n" @@ -27,29 +27,29 @@ msgid "" msgstr "" "Wersja %s.\n" "\n" -"Błędy proszę zgłaszać na adres %s.\n" +"Błędy proszę zgłaszać na adres %s.\n" #: ../whois.c:287 ../whois.c:340 ../whois.c:347 ../whois.c:390 #, c-format msgid "Using server %s.\n" -msgstr "Użycie serwera %s.\n" +msgstr "UĹźycie serwera %s.\n" #: ../whois.c:325 msgid "This TLD has no whois server, but you can access the whois database at" -msgstr -"Ta główna domena nie ma serwera whois, ale można użyć bazy danych whois pod" +msgstr "" +"Ta główna domena nie ma serwera whois, ale moĹźna uĹźyć bazy danych whois pod" #: ../whois.c:330 msgid "This TLD has no whois server." -msgstr "Ta główna domena nie ma serwera whois." +msgstr "Ta główna domena nie ma serwera whois." #: ../whois.c:333 msgid "No whois server is known for this kind of object." -msgstr "Dla tego rodzaju obiektu nie jest znany żaden serwer whois." +msgstr "Dla tego rodzaju obiektu nie jest znany Ĺźaden serwer whois." #: ../whois.c:336 msgid "Unknown AS number or IP network. Please upgrade this program." -msgstr "Nieznany numer AS lub sieć IP. Proszę uaktualnić ten program." +msgstr "Nieznany numer AS lub sieć IP. Proszę uaktualnić ten program." #: ../whois.c:354 #, c-format @@ -59,7 +59,7 @@ msgid "" "\n" msgstr "" "\n" -"Pytanie o zakończenie IPv4 %s adresu IPv6 typu 6to4.\n" +"Pytanie o zakończenie IPv4 %s adresu IPv6 typu 6to4.\n" "\n" #: ../whois.c:361 @@ -70,7 +70,7 @@ msgid "" "\n" msgstr "" "\n" -"Pytanie o zakończenie IPv4 %s adresu IPv6 Teredo.\n" +"Pytanie o zakończenie IPv4 %s adresu IPv6 Teredo.\n" "\n" #: ../whois.c:391 @@ -98,38 +98,38 @@ msgstr "" #: ../whois.c:443 ../whois.c:446 #, c-format msgid "Cannot parse this line: %s" -msgstr "Nie można przeanalizować tej linii: %s" +msgstr "Nie moĹźna przeanalizować tej linii: %s" #: ../whois.c:635 msgid "Warning: RIPE flags used with a traditional server." -msgstr "Uwaga: użyto flag RIPE ze starszym serwerem." +msgstr "Uwaga: uĹźyto flag RIPE ze starszym serwerem." #: ../whois.c:805 ../whois.c:921 msgid "" "Catastrophic error: disclaimer text has been changed.\n" "Please upgrade this program.\n" msgstr "" -"Katastrofa! Tekst oświadczenia został zmieniony.\n" -"Proszę uaktualnić ten program.\n" +"Katastrofa! Tekst oświadczenia został zmieniony.\n" +"Proszę uaktualnić ten program.\n" #: ../whois.c:985 #, c-format msgid "Host %s not found." -msgstr "Serwer %s nie został znaleziony." +msgstr "Serwer %s nie został znaleziony." #: ../whois.c:995 #, c-format msgid "%s/tcp: unknown service" -msgstr "%s/tcp: usługa nieznana" +msgstr "%s/tcp: usługa nieznana" #: ../whois.c:1070 msgid "Timeout." -msgstr "Upłynął limit czasu." +msgstr "Upłynął limit czasu." #: ../whois.c:1076 #, c-format msgid "Interrupted by signal %d..." -msgstr "Przerwano sygnałem %d..." +msgstr "Przerwano sygnałem %d..." #: ../whois.c:1444 #, c-format @@ -168,37 +168,49 @@ msgid "" "-v TYPE request verbose template for object of TYPE\n" "-q [version|sources|types] query specified server info\n" msgstr "" -"Składnia: whois [OPCJA]... OBIEKT...\n" +"Składnia: whois [OPCJA]... OBIEKT...\n" "\n" -"-h HOST, --host HOST łączenie z serwerem HOST\n" -"-p PORT, --port PORT łączenie z portem PORT\n" -"-H ukrycie oświadczeń prawnych\n" -" --verbose wyjaśnianie, co się dzieje\n" -" --help wyświetlenie tego opisu i zakończenie działania\n" -" --version wyświetlenie informacji o wersji i zakończenie działania\n" +"-h HOST, --host HOST łączenie z serwerem HOST\n" +"-p PORT, --port PORT łączenie z portem PORT\n" +"-H ukrycie oświadczeń prawnych\n" +" --verbose wyjaśnianie, co się dzieje\n" +" --help wyświetlenie tego opisu i zakończenie działania\n" +" --version wyświetlenie informacji o wersji i zakończenie " +"działania\n" "\n" -"Następujące flagi są obsługiwane przez serwery whois.ripe.net i podobne:\n" -"-l zapytanie o jeden poziom mniej szczegółowe\n" -"-L wyszukanie wszystkich mniej szczegółowych dopasowań\n" -"-m wyszukanie pierwszego bardziej szczegółowego dopasowania\n" -"-M wyszukanie wszystkich bardziej szczegółowych dopasowań\n" -"-c wyszukanie najmniejszego dopasowania z atrybutem mnt-irt\n" -"-x dokładne dopasowanie\n" -"-b wypisanie zwięźle przedziałów adresów IP i kontaktu abuse\n" -"-B bez filtrowania abiektów (wyświetlanie adresów e-mail)\n" -"-G bez grupowania powiązanych obiektów\n" -"-d także obiekty odwrotnej delegacji DNS\n" -"-i ATR[,ATR]... wykonanie odwrotnego wyszukiwania ATRybutów\n" -"-T TYP[,TYP]... szukanie tylko obiektów podanego TYPU\n" -"-K zwrócenie tylko podstawowych kluczy\n" -"-r bez rekursywnego poszukiwania informacji kontaktowych\n" -"-R wymuszenie pokazania lokalnej kopii obiektu domeny nawet\n" -" jeśli zawiera odwołanie\n" -"-a przeszukanie wszystkich baz danych z kopii lustrzanej\n" -"-s ŹRÓDŁO[,ŹRÓDŁO]... przeszukanie odbicia lustrzanego bazy danych ze ŹRÓDŁA\n" -"-g ŹRÓDŁO:PIERW.-OST. szukanie uaktualnień ze ŹRÓDŁA od numeru PIERW. do OST.\n" -"-t TYP żądanie szablonu dla obiektu podanego TYPU\n" -"-v TYP żądanie szczegółowego szablonu dla obiektu podanego TYPU\n" +"Następujące flagi są obsługiwane przez serwery whois.ripe.net i podobne:\n" +"-l zapytanie o jeden poziom mniej szczegółowe\n" +"-L wyszukanie wszystkich mniej szczegółowych dopasowań\n" +"-m wyszukanie pierwszego bardziej szczegółowego " +"dopasowania\n" +"-M wyszukanie wszystkich bardziej szczegółowych " +"dopasowań\n" +"-c wyszukanie najmniejszego dopasowania z atrybutem mnt-" +"irt\n" +"-x dokładne dopasowanie\n" +"-b wypisanie zwięźle przedziałów adresĂłw IP i kontaktu " +"abuse\n" +"-B bez filtrowania abiektĂłw (wyświetlanie adresĂłw e-" +"mail)\n" +"-G bez grupowania powiązanych obiektĂłw\n" +"-d takĹźe obiekty odwrotnej delegacji DNS\n" +"-i ATR[,ATR]... wykonanie odwrotnego wyszukiwania ATRybutĂłw\n" +"-T TYP[,TYP]... szukanie tylko obiektĂłw podanego TYPU\n" +"-K zwrĂłcenie tylko podstawowych kluczy\n" +"-r bez rekursywnego poszukiwania informacji " +"kontaktowych\n" +"-R wymuszenie pokazania lokalnej kopii obiektu domeny " +"nawet\n" +" jeśli zawiera odwołanie\n" +"-a przeszukanie wszystkich baz danych z kopii " +"lustrzanej\n" +"-s ĹšRÓDŁO[,ĹšRÓDŁO]... przeszukanie odbicia lustrzanego bazy danych ze " +"ĹšRÓDŁA\n" +"-g ĹšRÓDŁO:PIERW.-OST. szukanie uaktualnień ze ĹšRÓDŁA od numeru PIERW. do " +"OST.\n" +"-t TYP żądanie szablonu dla obiektu podanego TYPU\n" +"-v TYP żądanie szczegółowego szablonu dla obiektu podanego " +"TYPU\n" "-q [version|sources|types] zapytanie serwera o podane informacje\n" #: ../mkpasswd.c:125 @@ -212,50 +224,50 @@ msgstr "standardowa 56-bitowa, oparta o DES funkcja crypt(3)" #: ../mkpasswd.c:204 #, c-format msgid "Invalid method '%s'.\n" -msgstr "Nieprawidłowa metoda '%s'.\n" +msgstr "Nieprawidłowa metoda '%s'.\n" #: ../mkpasswd.c:213 ../mkpasswd.c:225 #, c-format msgid "Invalid number '%s'.\n" -msgstr "Nieprawidłowa liczba '%s'.\n" +msgstr "Nieprawidłowa liczba '%s'.\n" #: ../mkpasswd.c:243 #, c-format msgid "Try '%s --help' for more information.\n" -msgstr "'%s --help' poda więcej informacji.\n" +msgstr "'%s --help' poda więcej informacji.\n" # : ../mkpasswd.c:152 #: ../mkpasswd.c:287 #, c-format msgid "Wrong salt length: %d byte when %d expected.\n" msgid_plural "Wrong salt length: %d bytes when %d expected.\n" -msgstr[0] "Błędna długość zarodka: %d bajt kiedy oczekiwano %d.\n" -msgstr[1] "Błędna długość zarodka: %d bajty kiedy oczekiwano %d.\n" -msgstr[2] "Błędna długość zarodka: %d bajtów kiedy oczekiwano %d.\n" +msgstr[0] "Błędna długość zarodka: %d bajt kiedy oczekiwano %d.\n" +msgstr[1] "Błędna długość zarodka: %d bajty kiedy oczekiwano %d.\n" +msgstr[2] "Błędna długość zarodka: %d bajtĂłw kiedy oczekiwano %d.\n" # : ../mkpasswd.c:152 #: ../mkpasswd.c:292 #, c-format msgid "Wrong salt length: %d byte when %d <= n <= %d expected.\n" msgid_plural "Wrong salt length: %d bytes when %d <= n <= %d expected.\n" -msgstr[0] "Błędna długość zarodka: %d bajt kiedy oczekiwano %d <= n <= %d.\n" -msgstr[1] "Błędna długość zarodka: %d bajty kiedy oczekiwano %d <= n <= %d.\n" -msgstr[2] "Błędna długość zarodka: %d bajtów kiedy oczekiwano %d <= n <= %d.\n" +msgstr[0] "Błędna długość zarodka: %d bajt kiedy oczekiwano %d <= n <= %d.\n" +msgstr[1] "Błędna długość zarodka: %d bajty kiedy oczekiwano %d <= n <= %d.\n" +msgstr[2] "Błędna długość zarodka: %d bajtĂłw kiedy oczekiwano %d <= n <= %d.\n" #: ../mkpasswd.c:301 #, c-format msgid "Illegal salt character '%c'.\n" -msgstr "Błędny znak zarodka '%c'.\n" +msgstr "Błędny znak zarodka '%c'.\n" #: ../mkpasswd.c:352 ../mkpasswd.c:365 #, c-format msgid "Password: " -msgstr "Hasło: " +msgstr "Hasło: " #: ../mkpasswd.c:384 #, c-format msgid "Method not supported by crypt(3).\n" -msgstr "Metoda nie obsługiwana przez crypt(3).\n" +msgstr "Metoda nie obsługiwana przez crypt(3).\n" #: ../mkpasswd.c:492 #, c-format @@ -264,8 +276,8 @@ msgid "" "Crypts the PASSWORD using crypt(3).\n" "\n" msgstr "" -"Składnia: mkpasswd [OPCJE]... [HASŁO [ZARODEK]]\n" -"Koduje HASŁO przy użyciu funkcji crypt(3).\n" +"Składnia: mkpasswd [OPCJE]... [HASŁO [ZARODEK]]\n" +"Koduje HASŁO przy uĹźyciu funkcji crypt(3).\n" "\n" #: ../mkpasswd.c:495 @@ -287,24 +299,24 @@ msgid "" "\n" "Report bugs to %s.\n" msgstr "" -" -m, --method=TYP wybór metody TYP\n" +" -m, --method=TYP wybĂłr metody TYP\n" " -5 to samo, co --method=md5\n" -" -S, --salt=ZARODEK użycie podanego ZARODKA\n" -" -R, --rounds=LICZBA użycie podanej LICZBY cykli\n" -" -P, --password-fd=NUM odczyt hasła z deskryptora pliku NUM zamiast\n" +" -S, --salt=ZARODEK uĹźycie podanego ZARODKA\n" +" -R, --rounds=LICZBA uĹźycie podanej LICZBY cykli\n" +" -P, --password-fd=NUM odczyt hasła z deskryptora pliku NUM zamiast\n" " z /dev/tty\n" " -s, --stdin to samo co --password-fd=0\n" -" -h, --help wyświetlenie tego opisu i zakończenie działania\n" -" -V, --version wyświetlenie informacji o wersji i zakończenie " -"działania\n" +" -h, --help wyświetlenie tego opisu i zakończenie działania\n" +" -V, --version wyświetlenie informacji o wersji i zakończenie " +"działania\n" "\n" -"Jeśli nie podano HASŁA, pobierane jest interaktywnie.\n" -"Jeśli nie podano ZARODKA, generowany jest losowy.\n" -"Jeśli podano TYP 'help', wypisywane są dostępne metody.\n" +"Jeśli nie podano HASŁA, pobierane jest interaktywnie.\n" +"Jeśli nie podano ZARODKA, generowany jest losowy.\n" +"Jeśli podano TYP 'help', wypisywane są dostępne metody.\n" "\n" -"Błędy proszę zgłaszać na adres %s.\n" +"Błędy proszę zgłaszać na adres %s.\n" #: ../mkpasswd.c:525 #, c-format msgid "Available methods:\n" -msgstr "Dostępne metody:\n" +msgstr "Dostępne metody:\n" From 7efff0a3cc704bb7a61d7cb3a112e442a84a4611 Mon Sep 17 00:00:00 2001 From: Marco d'Itri Date: Thu, 28 Mar 2019 00:51:38 +0100 Subject: [PATCH 33/33] Debian changelog for 5.4.2 --- debian/changelog | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/debian/changelog b/debian/changelog index 706a170..93cb4cc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +whois (5.4.2) unstable; urgency=medium + + * Added the .ss and .xn--mgbah1a3hjkrd (موريتانيا, Mauritania) TLD + servers. + * Updated the .in TLD and related IDN TLDs servers. + * Updated the .fm TLD server. + + -- Marco d'Itri Thu, 28 Mar 2019 00:48:28 +0100 + whois (5.4.1) unstable; urgency=medium * Added the .mw TLD server.