Hello community, here is the log from the commit of package whois for openSUSE:Factory checked in at 2018-11-08 09:49:35 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/whois (Old) and /work/SRC/openSUSE:Factory/.whois.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "whois" Thu Nov 8 09:49:35 2018 rev:70 rq:646825 version:5.4.0 Changes: -------- --- /work/SRC/openSUSE:Factory/whois/whois.changes 2018-07-25 16:11:04.605682167 +0200 +++ /work/SRC/openSUSE:Factory/.whois.new/whois.changes 2018-11-08 09:49:39.453017248 +0100 @@ -1,0 +2,13 @@ +Mon Oct 29 14:53:31 UTC 2018 - [email protected] + +- whois 5.4.0: + * Add support for the new libxcrypt 4.x. + This allows mkpasswd to support many modern password hash methods + * Renam the hash types (i.e. the arguments to -H) to use the + naming convention established by John the Ripper + * Make mkpasswd use entropy gathered by crypt_gensalt(3), when + available + * Add the .gp TLD server + * Update the list of new gTLDs + +------------------------------------------------------------------- Old: ---- whois_5.3.2.tar.xz New: ---- whois_5.4.0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ whois.spec ++++++ --- /var/tmp/diff_new_pack.vhM2R3/_old 2018-11-08 09:49:40.005016596 +0100 +++ /var/tmp/diff_new_pack.vhM2R3/_new 2018-11-08 09:49:40.009016591 +0100 @@ -17,7 +17,7 @@ Name: whois -Version: 5.3.2 +Version: 5.4.0 Release: 0 Summary: Intelligent WHOIS client License: GPL-2.0-or-later ++++++ whois.asc ++++++ --- /var/tmp/diff_new_pack.vhM2R3/_old 2018-11-08 09:49:40.037016558 +0100 +++ /var/tmp/diff_new_pack.vhM2R3/_new 2018-11-08 09:49:40.041016553 +0100 @@ -5,32 +5,32 @@ Source: whois Binary: whois Architecture: any -Version: 5.3.2 +Version: 5.4.0 Maintainer: Marco d'Itri <[email protected]> -Standards-Version: 4.1.2 +Standards-Version: 4.2.1 Vcs-Browser: https://github.com/rfc1036/whois Vcs-Git: git://github.com/rfc1036/whois.git Build-Depends: debhelper (>= 9), gettext, libidn2-dev (>= 2.0.3) Package-List: whois deb net standard arch=any Checksums-Sha1: - 3151a51a656ae81c7fb02e8021be1eebecb63c98 82984 whois_5.3.2.tar.xz + 59aa9e9b7319f7814d84b167168f889f46e6d539 83576 whois_5.4.0.tar.xz Checksums-Sha256: - 79714ba89172bca08a2443f59885daa4af0c5f8d6a49bc9e7f2a83559a286354 82984 whois_5.3.2.tar.xz + 3775ae0cfaa6dd8d886e5233c4826225cddcb88c99c2a08130d14e15fe58e378 83576 whois_5.4.0.tar.xz Files: - 5eb7bf0c00737bdde0ac0be0ec6dd64a 82984 whois_5.3.2.tar.xz + 90b97c2431d3fcfc48041264a8c5c6cf 83576 whois_5.4.0.tar.xz -----BEGIN PGP SIGNATURE----- -iQGzBAEBCgAdFiEEGBsIcS5ipP0URKfyK/WlwSLE96QFAltLJrUACgkQK/WlwSLE -96S7dAv/RdN7VIMmevy9g3bGQgMD/D46OBJqGQoZxPbMGHhcIl/fkrRc28A5qQ0j -eVCM4CzoQZt1OY78X+F+HCfqf5GBT2M3lzdAY6i1TB2CMI2J2pZOhAoEkupc8bKs -9/SiLsa7DhgflTZkfmE28R+pZ1UZzXd3+3ZCox9oRpm3QQcOSExjtw3ZaP/dnTBE -Q3dFN77Ce4mk/g341mxJaFfe36pfXmTzN9Ms/A8lnSZi0gR8QxM2kudf3DKo7KiD -1e2Vw8gGPcXwhS6XXQTmOyy2KY+e3cWJj97fF0GmewGdbzukqAS1Om4ATmq/r1nl -X3hypYcv7b+ulemsqysbQPCbsR01xP1xxwZcOiaxS+CBI9Nfj4to/hVOqH1l/aMv -35EJAJ5ifmzqgpeGkgpu4XVMjEd7CP8QGrjGeQPppb3BeQKtrsjTty7ZFhv46UfS -jhORKpsiuzHqcglXUUG/cSueu3WIrX8N4G5oqzJxO39vXzi0oAP7tJDkyUPv38+o -90V9fPGf -=uqG3 +iQGzBAEBCgAdFiEEGBsIcS5ipP0URKfyK/WlwSLE96QFAlvTQxAACgkQK/WlwSLE +96SUZgv/dacoRINpsmVXddJ60ANOFeWc4kxD7NuxatkWGfzpZmizqq3iHfZsc4Xl +MWeW1CmXpI7NI3xz282tdkCl2ZfVQuJK3+hlQp7JyoEJj3Jw5Zfq+cxtodTd7o/l +9EJ50bmrQj7Lv8NsEC1R8yNrlo3vvJgIr87rijyaxjw//g/S8xddJw/V6tC5+MCE +/G+hlayqYa67ETz1p8llBqhWyeYetMHD1xMJ28C8/peSnhaYx1FzhwO7xKFdonDD +4RNacJGBlrTB1Sgr/JsCHmFjKWR/+TvktOioHkIvEaw4kMeEQVChpXKuWJH2Cglc +gCdHpRLjCesClXDIfDU76M/Vcrlqc+jLi2MXxNNNzYtSDTtMLxNOF77zRpAWmWvb +KTf8snWMaOiIzDOD8D23RtQ1QPJtmSf8b2E/m13R6XIPxpEyPxrPrjUzCj8guX0y +V2ck9BwTaup7/wX+uLXrR5qTfqf8/zLOzHjDbjFOEXdEOTFkDw8aTMeympgeQfs+ +hSX5KHVV +=n7bL -----END PGP SIGNATURE----- ++++++ whois_5.3.2.tar.xz -> whois_5.4.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/whois-5.3.2/Makefile new/whois-5.4.0/Makefile --- old/whois-5.3.2/Makefile 2018-05-22 04:36:01.000000000 +0200 +++ new/whois-5.4.0/Makefile 2018-10-14 03:44:01.000000000 +0200 @@ -51,14 +51,17 @@ DEFS += -DHAVE_ICONV endif -ifdef HAVE_XCRYPT +ifeq ($(shell $(PKG_CONFIG) --exists 'libxcrypt >= 4.1' || echo NO),) +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 -DEFS += -DHAVE_XCRYPT -DHAVE_LINUX_CRYPT_GENSALT +else ifdef HAVE_LIBOWCRYPT +# owl and openSUSE have crypt_gensalt(3) in libowcrypt +DEFS += -DHAVE_CRYPT_H -DHAVE_LINUX_CRYPT_GENSALT -D_OW_SOURCE +mkpasswd_LDADD += -lcrypt -lowcrypt else -ifdef HAVE_LINUX_CRYPT_GENSALT -# owl and openSUSE have crypt_gensalt(3) in the libc's libcrypt -DEFS += -DHAVE_LINUX_CRYPT_GENSALT -endif mkpasswd_LDADD += -lcrypt endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/whois-5.3.2/config.h new/whois-5.4.0/config.h --- old/whois-5.3.2/config.h 2017-12-27 03:29:15.000000000 +0100 +++ new/whois-5.4.0/config.h 2018-10-14 03:44:01.000000000 +0200 @@ -17,7 +17,7 @@ # include <sys/param.h> #endif -#ifdef linux +#ifdef __GLIBC__ # define ENABLE_NLS #endif @@ -40,6 +40,7 @@ #if defined __APPLE__ && defined __MACH__ # define HAVE_GETOPT_LONG # define HAVE_GETADDRINFO +# define HAVE_BSDICRYPT #endif #if defined __GLIBC__ @@ -52,10 +53,22 @@ # 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 + +#if defined OpenBSD || defined __FreeBSD__ || defined __NetBSD__ +# define HAVE_BSDICRYPT +#endif + /* 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 /* FIXME: which systems lack this? */ @@ -66,7 +79,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 \ @@ -95,6 +108,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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/whois-5.3.2/debian/changelog new/whois-5.4.0/debian/changelog --- old/whois-5.3.2/debian/changelog 2018-07-15 12:38:42.000000000 +0200 +++ new/whois-5.4.0/debian/changelog 2018-10-26 18:32:49.000000000 +0200 @@ -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 <[email protected]> Fri, 26 Oct 2018 18:32:49 +0200 + whois (5.3.2) unstable; urgency=medium * Added the .ge TLD server. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/whois-5.3.2/debian/control new/whois-5.4.0/debian/control --- old/whois-5.3.2/debian/control 2017-12-10 17:23:16.000000000 +0100 +++ new/whois-5.4.0/debian/control 2018-10-14 03:44:01.000000000 +0200 @@ -2,7 +2,7 @@ Section: net Priority: standard Maintainer: Marco d'Itri <[email protected]> -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 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/whois-5.3.2/mkpasswd.1 new/whois-5.4.0/mkpasswd.1 --- old/whois-5.3.2/mkpasswd.1 2013-03-30 02:31:39.000000000 +0100 +++ new/whois-5.4.0/mkpasswd.1 2018-10-14 03:44:01.000000000 +0200 @@ -20,10 +20,13 @@ 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. 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. @@ -49,6 +52,8 @@ .IR passwd(1), .IR passwd(5), .IR crypt(3), +.IR crypt(5), +.IR crypt_gensalt(3), .IR getpass(3) .SH AUTHOR .B mkpasswd diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/whois-5.3.2/mkpasswd.c new/whois-5.4.0/mkpasswd.c --- old/whois-5.3.2/mkpasswd.c 2018-07-15 12:38:42.000000000 +0200 +++ new/whois-5.4.0/mkpasswd.c 2018-10-14 03:44:01.000000000 +0200 @@ -35,12 +35,11 @@ #include <strings.h> #include <time.h> #include <sys/types.h> -#ifdef HAVE_XCRYPT +#ifdef HAVE_XCRYPT_H #include <xcrypt.h> #include <sys/stat.h> #endif -#ifdef HAVE_LINUX_CRYPT_GENSALT -#define _OW_SOURCE +#ifdef HAVE_CRYPT_H #include <crypt.h> #endif #ifdef HAVE_GETTIMEOFDAY @@ -82,32 +81,53 @@ 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 */ - { "des", "", 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) +#ifdef CRYPT_GENSALT_IMPLEMENTS_DEFAULT_PREFIX + { "auto", NULL, 0, 0, 0, NULL }, +#endif + /* 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", "$2b$", 22, 22, 1, "Blowfish" }, - { "bfa", "$2a$", 22, 22, 1, "Blowfish (obsolete $2a$ version)" }, -# else - { "bf", "$2a$", 22, 22, 1, "Blowfish" }, -# endif -#endif -#if defined HAVE_LINUX_CRYPT_GENSALT - { "bf", "$2a$", 22, 22, 1, "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" }, + { "bf", "$2a$", 22, 22, 2, "bcrypt" }, #endif -#if defined FreeBSD - { "nt", "$3$", 0, 0, 0, "NT-Hash" }, +#ifdef HAVE_BCRYPT + { "bcrypt", "$2b$", 22, 22, 2, "bcrypt" }, + { "bcrypt-a", "$2a$", 22, 22, 2, "bcrypt (obsolete $2a$ version)" }, #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" }, + { "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) || 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 || defined XCRYPT_VERSION_NUM + { "nt", "$3$", 0, 0, 0, "NT-Hash" }, #endif /* http://www.crypticide.com/dropsafe/article/1389 */ /* @@ -116,9 +136,6 @@ * 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 } }; @@ -164,6 +181,17 @@ 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; @@ -230,18 +258,21 @@ 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$")) { - /* OpenBSD Blowfish and derivatives */ + if (!salt_prefix) { + /* NULL means that crypt_gensalt will choose one later */ + } 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); @@ -283,18 +314,19 @@ #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); + if (entropy) + free(entropy); #else unsigned int salt_len = salt_maxlen; @@ -342,12 +374,13 @@ 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 - * 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); } @@ -357,9 +390,27 @@ exit(0); } -#if defined RANDOM_DEVICE || defined HAVE_ARC4RANDOM_BUF || defined HAVE_GETENTROPY +#ifdef CRYPT_GENSALT_IMPLEMENTS_AUTO_ENTROPY + +/* + * 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 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) +void *get_random_bytes(const unsigned int count) { char *buf = NOFAIL(malloc(count)); @@ -473,7 +524,8 @@ 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("%-15s %s\n", methods[i].method, methods[i].desc); } char *read_line(FILE *fp) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/whois-5.3.2/new_gtlds_list new/whois-5.4.0/new_gtlds_list --- old/whois-5.3.2/new_gtlds_list 2018-07-15 12:38:42.000000000 +0200 +++ new/whois-5.4.0/new_gtlds_list 2018-09-12 02:26:55.000000000 +0200 @@ -512,6 +512,7 @@ imdb immo immobilien +inc industries infiniti ing diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/whois-5.3.2/tld_serv_list new/whois-5.4.0/tld_serv_list --- old/whois-5.3.2/tld_serv_list 2018-07-15 12:38:42.000000000 +0200 +++ new/whois-5.4.0/tld_serv_list 2018-10-14 03:44:01.000000000 +0200 @@ -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 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/whois-5.3.2/version.h new/whois-5.4.0/version.h --- old/whois-5.3.2/version.h 2018-05-22 15:36:34.000000000 +0200 +++ new/whois-5.4.0/version.h 2018-10-26 18:32:49.000000000 +0200 @@ -1 +1 @@ -#define VERSION "5.3.1" +#define VERSION "5.4.0"
