[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Libidn 1.34 released

From: Tim Rühsen
Subject: Libidn 1.34 released
Date: Sat, 31 Mar 2018 18:00:21 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0

GNU Libidn is a fully documented implementation of the Stringprep,
Punycode and IDNA specifications.  Libidn's purpose is to encode and
decode internationalized domain name strings.  There are native C, C#
and Java libraries.

Noteworthy changes since the last release (from NEWS file):

* Version 1.34 (2018-03-31)

** libidn: Fix integer overflow in combine_hangul()
   Found by fuzzing.

** libidn: Fix integer overflow in punycode decoder
   Found by fuzzing, fix for the fix reported by Christian Weisgerber

** libidn: Fix performance issue in idna_to_unicode_internal()
   Found by fuzzing.

** libidn: Fix performance issue in stringprep functions.
   Found by fuzzing.

** libidn: Fix NULL pointer dereference in g_utf8_normalize()
   Found by fuzzing.

** libidn: Fix NULL pointer dereference in stringprep_ucs4_nfkc_normalize()
   Found by fuzzing.

** libidn: Increase performance of stringprep functions
   Found by fuzzing.

** testing: Add OSS-fuzz integration and regression testing

** build: Update gnulib files

** build: Modernize GTK-Doc build

** build: Fix parallel builds

** build: Add configure flag --disable-doc

** build: Add configure flag --enable-ubsan (enable UB Sanitizer)

** build: Add configure flag --enable-asan (enable Address Sanitizer)

** build: Fix compiler warnings

** build: Fix build for gcc-7

** i18n: Added Swedish translation.
   Thanks to Josef Andersson.

** API and ABI is backwards compatible with the previous version.

The C library contains a generic Stringprep implementation.  Profiles
for Nameprep, iSCSI, SASL, XMPP and Kerberos V5 are included.  Punycode
and ASCII Compatible Encoding (ACE) via IDNA are supported.  A mechanism
to define Top-Level Domain (TLD) specific validation tables, and to
compare strings against those tables, is included.  Default tables for
some TLDs are also included.

The Stringprep API consists of two main functions, one for converting
data from the system's native representation into UTF-8, and one
function to perform the Stringprep processing.  Adding a new Stringprep
profile for your application within the API is straightforward.  The
Punycode API consists of one encoding function and one decoding
function.  The IDNA API consists of the ToASCII and ToUnicode functions,
as well as an high-level interface for converting entire domain names to
and from the ACE encoded form.  The TLD API consists of one set of
functions to extract the TLD name from a domain string, one set of
functions to locate the proper TLD table to use based on the TLD name,
and core functions to validate a string against a TLD table, and some
utility wrappers to perform all the steps in one call.

Libidn is developed for the GNU/Linux system, but runs on over 20 Unix
platforms (including Solaris, IRIX, AIX, and Tru64) and Windows.  The
library is written in C and (parts of) the API is also accessible from
C++, Emacs Lisp, Python and Java.  A native Java and C# port is

Also included is a command line tool, several self tests, code examples,
and more.

Improving Libidn is costly, but you can help!  We are looking for
organizations that find Libidn useful and wish to contribute back.  You
can contribute by reporting bugs, improve the software, or donate money
or equipment.

Commercial support contracts for Libidn are available, and they help
finance continued maintenance.  Simon Josefsson Datakonsult AB, a
Stockholm based privately held company, is currently funding Libidn
maintenance.  We are always looking for interesting development
projects.  See for more details.

The project page of the library is available at:

All manual formats are available from:

Specifically, the following formats are available.

The main manual: - HTML format - PDF format

API Reference manual: - GTK-DOC HTML - GTK-DOC PDF

Doxygen documentation: - HTML format - PDF format

JavaDoc output for the Java API:

If you need help to use Libidn, or want to help others, you are
invited to join our help-libidn mailing list, see:

Here are the compressed sources (3.4MB):

Here are GPG detached signatures:

Here are the SHA-1 and SHA-224 signatures:

8701e3d01df25431802ce483756ecad698156835  libidn-1.34.tar.gz
92fc0d5e2f790bc1ea2359d7ff72798ce59c901118d5a9ac0bf8ff07  libidn-1.34.tar.gz

The software is cryptographically signed by the author using an OpenPGP
key identified by the following information:

pub   rsa4096/0x08302DB6A2670428 2014-06-26 [SC] [expires: 2018-06-12]
      Key fingerprint = 1CB2 7DBC 9861 4B2D 5841  646D 0830 2DB6 A267 0428
uid                   [ultimate] Tim Rühsen <address@hidden>

Code coverage, clang-analyzer output, and cyclomatic code complexity charts:

Happy hacking,

Attachment: signature.asc
Description: OpenPGP digital signature

reply via email to

[Prev in Thread] Current Thread [Next in Thread]