glibc/localedata
Leonhard Holz 0f9e585480 Fix memory handling in strxfrm_l [BZ #16009]
[Modified from the original email by Siddhesh Poyarekar]

This patch solves bug #16009 by implementing an additional path in
strxfrm that does not depend on caching the weight and rule indices.

In detail the following changed:

* The old main loop was factored out of strxfrm_l into the function
do_xfrm_cached to be able to alternativly use the non-caching version
do_xfrm.

* strxfrm_l allocates a a fixed size array on the stack. If this is not
sufficiant to store the weight and rule indices, the non-caching path is
taken. As the cache size is not dependent on the input there can be no
problems with integer overflows or stack allocations greater than
__MAX_ALLOCA_CUTOFF. Note that malloc-ing is not possible because the
definition of strxfrm does not allow an oom errorhandling.

* The uncached path determines the weight and rule index for every char
and for every pass again.

* Passing all the locale data array by array resulted in very long
parameter lists, so I introduced a structure that holds them.

* Checking for zero src string has been moved a bit upwards, it is
before the locale data initialization now.

* To verify that the non-caching path works correct I added a test run
to localedata/sort-test.sh & localedata/xfrm-test.c where all strings
are patched up with spaces so that they are too large for the caching path.
2015-01-13 11:33:56 +05:30
..
charmaps Update BIG5-HKSCS charmap to HKSCS-2008 2013-06-11 17:02:59 +02:00
locales New locale raj_IN (#16857) 2014-12-01 15:23:47 +05:30
tests Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tests-mbwc Fix Wundef warning with SHOJI_IS_RIGHT 2014-07-08 15:02:58 +05:30
tst-fmon-locales
bug-iconv-trans.c
bug-setlocale1-static.c Support run bug-setlocale1 directly 2013-01-10 14:15:49 -08:00
bug-setlocale1.c Support run bug-setlocale1 directly 2013-01-10 14:15:49 -08:00
bug-usesetlocale.c
ChangeLog Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
collate-test.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
cs_CZ.in
da_DK.in
de_DE.in
Depend
dump-ctype.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
en_US.in
fr_FR.in
gen-locale.sh Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
gen-unicode-ctype.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
hr_HR.in
Makefile Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
README Change sources.redhat.com references to sourceware.org. 2012-12-06 15:32:46 +00:00
show-ucs-data.c
si_LK.in
sort-test.sh Fix memory handling in strxfrm_l [BZ #16009] 2015-01-13 11:33:56 +05:30
SUPPORTED New locale raj_IN (#16857) 2014-12-01 15:23:47 +05:30
sv_SE.in
th_TH.in
tr_TR.in
tst-ctype-de_DE.ISO-8859-1.in
tst-ctype.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-ctype.sh Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-digits.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-fmon.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-fmon.data Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-fmon.sh Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-langinfo-static.c fix nl_langinfo with static linking (BZ #16915) 2014-05-20 18:43:14 +02:00
tst-langinfo.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-langinfo.sh Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-leaks.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-locale.sh Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-mbswcs1.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-mbswcs2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-mbswcs3.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-mbswcs4.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-mbswcs5.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-mbswcs6.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-numeric.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-numeric.data Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-numeric.sh Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-rpmatch.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-rpmatch.sh Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-setlocale2.c Optimize access to isXYZ and toXYZ tables 2011-10-15 16:27:08 -04:00
tst-setlocale3.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-setlocale.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-sscanf.c
tst-strfmon1.c
tst-trans.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-trans.sh Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-wctype.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-wctype.input
tst-xlocale1.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-xlocale2.c
xfrm-test.c Fix memory handling in strxfrm_l [BZ #16009] 2015-01-13 11:33:56 +05:30

		       POSIX locale descriptions
				  and
		    POSIX character set descriptions

Ulrich Drepper			Time-stamp: <2004/11/27 13:06:54 drepper>
drepper@redhat.com


This directory contains the data needed to build the locale data files
to use the internationalization features of the GNU libc.

POSIX.2 describes the `localedef' utility which is part of the GNU libc.
You need this program to "compile" the locale description in a form
suitable for fast access by the GNU libc functions.  Any compilation is
based on a given character set.

Once you run `make install' for the GNU libc the data files are
automatically installed in the right place, ready for use by the
`localedef' program.

To compile the locale data files you simply have to decide which locale
(based on the location and the language) and which character set you
use.  E.g., French speaking Canadians would use the locale `fr_CA' and
the character set `ISO_8859-1,1987'.  Calling `localedef' to get the
desired data should happen like this:

	localedef -i fr_CA -f ISO-8859-1 fr_CA

This will place the 6 output files in the appropriate directory where
the GNU libc functions can find them.  Please note that you need
permission to write to this directory ($(prefix)/share/locale, where
$(prefix) is the value you specified while configuring GNU libc).  If
you do not have the necessary permissions, you can write the files into an
arbitrary directory by giving a path including a '/' character instead
of `fr_CA'.  E.g., to put the new files in a subdirectory of the
current directory simply use

	localedef -i fr_CA -f ISO-8859-1 ./fr_CA

How to use these data files is described in the GNU libc manual,
especially in the section describing the `setlocale' function.

All problems should be reported using

  http://sourceware.org/bugzilla/


One more note: the `POSIX' locale definition is not meant to be used
as an input file for `localedef'.  It is rather there to show the
values with are built in the libc binaries as default values when no
legal locale is found or the "C" or "POSIX" locale is selected.


		       The collation test suite
		       ########################

This package also contains a (beginning of a) test suite for the
collation functions in the GNU libc.  The files are provided sorted.
The test program shuffles the lines and sort them afterwards.

Some of the files are provided in 8bit form, i.e., not only ASCII
characters.  So the tools you use to process the files should be 8bit
clean.

To run the test program the appropriate locale information must be
installed.  Therefore the localedef program is used to generate this
data used the locale and charmap description files contained here.
Since we cannot run the localedef program in case of cross-compilation
no tests at all are performed.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Local Variables:
 mode:text
 eval:(load-library "time-stamp")
 eval:(make-local-variable 'write-file-hooks)
 eval:(add-hook 'write-file-hooks 'time-stamp)
 eval:(setq time-stamp-format '(time-stamp-yyyy/mm/dd time-stamp-hh:mm:ss user-login-name))
End: