Bug#716775: libc6:amd64: mismatch between strcasecmp and toupper/tolower in tr_TR.iso88599 locale
Package: libc6
Version: 2.17-7
Severity: normal
There is a mismatch between strcasecmp and toupper/tolower in the
tr_TR.iso88599 locale:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <ctype.h>
#include <strings.h>
int main (void)
{
int i, j, k;
char *infs[] = { "INF", "inf" };
if (setlocale (LC_ALL, "") == NULL)
{
fprintf (stderr, "locale-test: can't set locales\n");
exit (EXIT_FAILURE);
}
for (i = 0; i < 2; i++)
for (j = 0; j < 4; j++)
{
char s[4];
for (k = 0; k < 3; k++)
{
s[k] = infs[i][k];
if (j > k)
s[k] = (i ? toupper : tolower)(s[k]);
}
s[3] = '\0';
printf ("%d%d %s\n",
!strcasecmp (s, "INF"), !strcasecmp (s, "inf"), s);
}
return 0;
}
gives:
11 INF
00 ıNF
00 ınF
00 ınf
11 inf
00 İnf
00 İNf
00 İNF
Since the modifications of the string have been done with toupper and
tolower, I would have expected 11 everywhere.
(Probably an upstream bug, but their BTS is currently down.)
-- System Information:
Debian Release: jessie/sid
APT prefers unstable
APT policy: (500, 'unstable'), (500, 'testing'), (500, 'stable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 3.9-1-amd64 (SMP w/8 CPU cores)
Locale: LANG=POSIX, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages libc6:amd64 depends on:
ii libgcc1 1:4.8.1-6
libc6:amd64 recommends no packages.
Versions of packages libc6:amd64 suggests:
ii debconf [debconf-2.0] 1.5.50
ii glibc-doc 2.17-7
ii locales 2.17-7
-- debconf information:
glibc/upgrade: true
glibc/disable-screensaver:
glibc/restart-failed:
* glibc/restart-services: cups cron atd apache2
* libraries/restart-without-asking: false
Reply to: