Package: libc6
Version: 2.2.5-10
Severity: normal
Tags: patch, woody, sarge, sid

Severity normal since most of these fix real bugs, even if you'd never
notice them normally.

First is that the LSB test suite requires a bunch of currencies that
the Euro obsoleted to be available.  

See Q2.3 in http://www.linuxbase.org/test/lsb-runtime-test-faq.html for
details and the explanation. The fix is to reinstate some of the currencies
removed in the glibc-cvs patchset:

--- glibc/glibc-2.2.5/debian/patches/glibc-cvs.dpatch   Fri Aug 16 04:09:15 2002
+++ glibc/glibc-2.2.5-lsb/debian/patches/glibc-cvs.dpatch       Thu Aug 15 00:46:23 
+2002
@@ -1433,30 +1433,16 @@
 diff -X .ignore -urN glibc-current/locale/iso-4217.def glibc-cvs/locale/iso-4217.def
 --- glibc-current/locale/iso-4217.def  Mon Dec 25 08:37:19 2000
 +++ glibc-cvs/locale/iso-4217.def      Sat Mar  2 16:23:05 2002
-@@ -6,40 +6,33 @@
-  *
-  * !!! The list has to be sorted !!!
-  */
--DEFINE_INT_CURR("ADP ")               /* Andorran Peseta  */
- DEFINE_INT_CURR("AED ")               /* United Arab Emirates Dirham  */
- DEFINE_INT_CURR("AFA ")               /* Afghanistan Afgani  */
+@@ -12,7 +12,7 @@
  DEFINE_INT_CURR("ALL ")               /* Albanian Lek  */
  DEFINE_INT_CURR("AMD ")               /* Armenia Dram  */
  DEFINE_INT_CURR("ANG ")               /* Netherlands Antilles  */
 -DEFINE_INT_CURR("AON ")               /* Angolan New Kwanza  */
 +DEFINE_INT_CURR("AOA ")               /* Angolan Kwanza  */
  DEFINE_INT_CURR("ARS ")               /* Argentine Peso  */
--DEFINE_INT_CURR("ATS ")               /* Austrian Schilling  */
+ DEFINE_INT_CURR("ATS ")               /* Austrian Schilling  */
  DEFINE_INT_CURR("AUD ")               /* Australian Dollar  */
- DEFINE_INT_CURR("AWG ")               /* Aruba Guilder  */
- DEFINE_INT_CURR("AZM ")               /* Azerbaijan Manat  */
- DEFINE_INT_CURR("BAK ")               /* Bosnian and Herzegovina Convertible Mark  */
- DEFINE_INT_CURR("BBD ")               /* Barbados Dollar  */
- DEFINE_INT_CURR("BDT ")               /* Bangladesh Taka  */
--DEFINE_INT_CURR("BEF ")               /* Belgian Franc  */
- DEFINE_INT_CURR("BGL ")               /* Bulgarian Lev  */
- DEFINE_INT_CURR("BHD ")               /* Bahraini Dinar  */
- DEFINE_INT_CURR("BIF ")               /* Burundi Franc  */
+@@ -28,18 +28,14 @@
  DEFINE_INT_CURR("BMD ")               /* Burmudian Dollar  */
  DEFINE_INT_CURR("BND ")               /* Brunei Dollar  */
  DEFINE_INT_CURR("BOB ")               /* Bolivian Boliviano  */
@@ -1476,12 +1462,7 @@
  DEFINE_INT_CURR("CHF ")               /* Swiss Franc (Liechtenstein)  */
  DEFINE_INT_CURR("CLP ")               /* Chilean Peso  */
  DEFINE_INT_CURR("CNY ")               /* China Yuan Renminbi  */
-@@ -49,33 +42,24 @@
- DEFINE_INT_CURR("CVE ")               /* Cape Verde Escudo  */
- DEFINE_INT_CURR("CYP ")               /* Cypriot Pound  */
- DEFINE_INT_CURR("CZK ")               /* Czech Koruna  */
--DEFINE_INT_CURR("DEM ")               /* German Mark  */
- DEFINE_INT_CURR("DJF ")               /* Djibouti Franc  */
+@@ -54,7 +50,6 @@
  DEFINE_INT_CURR("DKK ")               /* Danish Krone (Faroe Islands, Greenland)  */
  DEFINE_INT_CURR("DOP ")               /* Dominican Republic  */
  DEFINE_INT_CURR("DZD ")               /* Algerian Dinar  */
@@ -1489,50 +1470,27 @@
  DEFINE_INT_CURR("EEK ")               /* Estonian Kroon  */
  DEFINE_INT_CURR("EGP ")               /* Egyptian Pound  */
  DEFINE_INT_CURR("ERN ")               /* Eritrean Nakfa  */
--DEFINE_INT_CURR("ESP ")               /* Spanish Peseta  */
- DEFINE_INT_CURR("ETB ")               /* Ethiopian Birr  */
- DEFINE_INT_CURR("EUR ")               /* European Union Euro  */
--DEFINE_INT_CURR("FIM ")               /* Finnish Markka  */
- DEFINE_INT_CURR("FJD ")               /* Fiji Dollar  */
- DEFINE_INT_CURR("FKP ")               /* Falkland Islands Pound (Malvinas)  */
--DEFINE_INT_CURR("FRF ")               /* French Franc  */
- DEFINE_INT_CURR("GBP ")               /* British Pound  */
- DEFINE_INT_CURR("GEL ")               /* Georgia Lari  */
- DEFINE_INT_CURR("GHC ")               /* Ghana Cedi  */
+@@ -71,11 +66,8 @@
  DEFINE_INT_CURR("GIP ")               /* Gibraltar Pound  */
  DEFINE_INT_CURR("GMD ")               /* Gambian Dalasi  */
  DEFINE_INT_CURR("GNF ")               /* Guinea Franc  */
 -DEFINE_INT_CURR("GNS ")               /* Guinea Syli  */
 -DEFINE_INT_CURR("GQE ")               /* Equatorial Guinea Ekwele  */
--DEFINE_INT_CURR("GRD ")               /* Greek Drachma  */
+ DEFINE_INT_CURR("GRD ")               /* Greek Drachma  */
  DEFINE_INT_CURR("GTQ ")               /* Guatemala Quetzal  */
 -DEFINE_INT_CURR("GWP ")               /* Guinea-Bissau Peso  */
  DEFINE_INT_CURR("GYD ")               /* Guyana Dollar  */
  DEFINE_INT_CURR("HKD ")               /* Hong Kong Dollar  */
  DEFINE_INT_CURR("HNL ")               /* Honduras Lempira  */
-@@ -83,13 +67,12 @@
- DEFINE_INT_CURR("HTG ")               /* Haiti Gourde  */
- DEFINE_INT_CURR("HUF ")               /* Hungarian Forint  */
+@@ -85,6 +77,7 @@
  DEFINE_INT_CURR("IDR ")               /* Indonesia Rupiah  */
--DEFINE_INT_CURR("IEP ")               /* Irish Pound  */
+ DEFINE_INT_CURR("IEP ")               /* Irish Pound  */
  DEFINE_INT_CURR("ILS ")               /* Israeli Shekel  */
 +DEFINE_INT_CURR("IMP ")               /* Isle of Man Pounds  */
  DEFINE_INT_CURR("INR ")               /* Indian Rupee (Bhutan)  */
  DEFINE_INT_CURR("IQD ")               /* Iraqi Dinar  */
  DEFINE_INT_CURR("IRR ")               /* Iranian Rial  */
- DEFINE_INT_CURR("ISK ")               /* Iceland Krona  */
--DEFINE_INT_CURR("ITL ")               /* Italian Lira (San Marino, Vatican City)  */
- DEFINE_INT_CURR("JMD ")               /* Jamaican Dollar  */
- DEFINE_INT_CURR("JOD ")               /* Jordanian Dinar  */
- DEFINE_INT_CURR("JPY ")               /* Japanese Yen  */
-@@ -108,14 +91,12 @@
- DEFINE_INT_CURR("LRD ")               /* Liberian Dollar  */
- DEFINE_INT_CURR("LSL ")               /* Lesotho Maloti  */
- DEFINE_INT_CURR("LTL ")               /* Lithuanian Litas  */
--DEFINE_INT_CURR("LUF ")               /* Luxembourg Franc  */
- DEFINE_INT_CURR("LVL ")               /* Latvia Lat  */
- DEFINE_INT_CURR("LYD ")               /* Libyan Arab Jamahiriya Dinar  */
- DEFINE_INT_CURR("MAD ")               /* Moroccan Dirham  */
+@@ -115,7 +108,6 @@
  DEFINE_INT_CURR("MDL ")               /* Moldova Lei  */
  DEFINE_INT_CURR("MGF ")               /* Madagasy Franc  */
  DEFINE_INT_CURR("MKD ")               /* Macedonia Denar  */
@@ -1540,7 +1498,7 @@
  DEFINE_INT_CURR("MMK ")               /* Myanmar Kyat  */
  DEFINE_INT_CURR("MNT ")               /* Mongolia Tugrik  */
  DEFINE_INT_CURR("MOP ")               /* Macau Pataca  */
-@@ -130,7 +111,6 @@
+@@ -130,7 +122,6 @@
  DEFINE_INT_CURR("NAD ")               /* Namibia Dollar  */
  DEFINE_INT_CURR("NGN ")               /* Nigeria Naira  */
  DEFINE_INT_CURR("NIO ")               /* Nicaragua Cordoba Oro  */
@@ -1548,17 +1506,16 @@
  DEFINE_INT_CURR("NOK ")               /* Norwegian Krone  */
  DEFINE_INT_CURR("NPR ")               /* Nepalese Rupee  */
  DEFINE_INT_CURR("NZD ")               /* New Zealand Dollar  */
-@@ -140,8 +120,7 @@
+@@ -140,7 +131,7 @@
  DEFINE_INT_CURR("PGK ")               /* Papau New Guinea Kina  */
  DEFINE_INT_CURR("PHP ")               /* Philippines Peso  */
  DEFINE_INT_CURR("PKR ")               /* Pakistan Rupee  */
 -DEFINE_INT_CURR("PLZ ")               /* Polish Zloty  */
--DEFINE_INT_CURR("PTE ")               /* Portugese Escudo  */
 +DEFINE_INT_CURR("PLN ")               /* Polish Zloty  */
+ DEFINE_INT_CURR("PTE ")               /* Portugese Escudo  */
  DEFINE_INT_CURR("PYG ")               /* Paraguay Guarani  */
  DEFINE_INT_CURR("QAR ")               /* Qatar Rial  */
- DEFINE_INT_CURR("ROL ")               /* Romanian Leu  */
-@@ -150,7 +129,7 @@
+@@ -150,7 +141,7 @@
  DEFINE_INT_CURR("SAR ")               /* Saudi Arabia Riyal  */
  DEFINE_INT_CURR("SBD ")               /* Solomon Islands Dollar  */
  DEFINE_INT_CURR("SCR ")               /* Seychelles Rupee  */
@@ -1567,7 +1524,7 @@
  DEFINE_INT_CURR("SEK ")               /* Swedish Krona  */
  DEFINE_INT_CURR("SGD ")               /* Singapore Dollar  */
  DEFINE_INT_CURR("SHP ")               /* St. Helena Pound  */
-@@ -158,9 +137,9 @@
+@@ -158,9 +149,9 @@
  DEFINE_INT_CURR("SKK ")               /* Slovakian Koruna  */
  DEFINE_INT_CURR("SLL ")               /* Sierra Leone Leone  */
  DEFINE_INT_CURR("SOS ")               /* Somalia Schilling  */
@@ -1578,7 +1535,7 @@
  DEFINE_INT_CURR("SVC ")               /* El Salvador Colon  */
  DEFINE_INT_CURR("SYP ")               /* Syrian Arab Republic Pound  */
  DEFINE_INT_CURR("SZL ")               /* Swaziland Lilangeni  */
-@@ -169,17 +148,14 @@
+@@ -169,17 +160,14 @@
  DEFINE_INT_CURR("TMM ")               /* Turkmenistan Manet  */
  DEFINE_INT_CURR("TND ")               /* Tunisian Dinar  */
  DEFINE_INT_CURR("TOP ")               /* Tonga Pa'Anga  */
@@ -1597,7 +1554,7 @@
  DEFINE_INT_CURR("UYU ")               /* Uruguay Peso Uruguayo  */
  DEFINE_INT_CURR("UZS ")               /* Uzbekistan Sum  */
  DEFINE_INT_CURR("VEB ")               /* Venezuelan Bolivar  */
-@@ -189,13 +165,10 @@
+@@ -189,13 +177,10 @@
  DEFINE_INT_CURR("XAF ")               /* Central African Franc (United Republic of 
Cameroon, Central African Republic, Chad, Congo, Gabon)  */
  DEFINE_INT_CURR("XCD ")               /* East Caribbean Dollar (Antiqua, Dominica, 
Grenada, Montserrat, St. Kitts-Nevis-Anguilla, Saint Lucia, Saint Vincent and the 
Grenadines)  */
  DEFINE_INT_CURR("XDR ")               /* International Monetary Fund  */

Second, is a bunch of various bug fixes. These go 'til the end of this
mail and work fine as a .dpatch on their own (with the appropriate script
header, obviously). These don't include the nice() changes, though.

FWIW, the modified glibc-cvs.dpatch file is at:
  http://people.debian.org/~ajt/lsb/patches/glibc-cvs.dpatch.gz

and the following patch in dpatch format is at:
  http://people.debian.org/~ajt/lsb/patches/various-lsb-fixes-suse.dpatch.gz

>From suse's glibc 2.2.5-55. Fixes:
    LSB.os/devclass/grantpt_L/T.grantpt_L-2       FAIL
    LSB.os/devclass/grantpt_L/T.grantpt_L-3       FAIL
    LSB.os/genuts/ftw/T.ftw-4                     FAIL
    LSB.os/genuts/nftw/T.nftw-10                  FAIL
    POSIX.os/procenv/sysconf/T.sysconf-10         FAIL

--- sysdeps/posix/sysconf.c     Fri Jul  6 06:56:01 2001
+++ sysdeps/posix/sysconf.c     Wed Dec 19 08:55:13 2001
@@ -24,6 +24,7 @@
 #include <stdio.h>
 #include <time.h>
 #include <unistd.h>
+#include <sys/param.h>
 #include <sys/sysinfo.h>
 #include <sys/types.h>
 #include <regex.h>
@@ -75,7 +76,7 @@
 #endif
 
     case _SC_TZNAME_MAX:
-      return __tzname_max ();
+      return MAX (__tzname_max (), _POSIX_TZNAME_MAX);
 
     case _SC_JOB_CONTROL:
 #ifdef _POSIX_JOB_CONTROL
--- sysdeps/generic/sysconf.c   Fri Jul  6 06:55:50 2001
+++ sysdeps/generic/sysconf.c   Wed Dec 19 08:55:11 2001
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1993, 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1993,1995,1996,1997,2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -21,6 +21,7 @@
 #include <unistd.h>
 #include <time.h>
 #include <limits.h>
+#include <sys/param.h>
 #include <sys/sysinfo.h>
 
 
@@ -36,7 +37,7 @@
       return -1;
 
     case _SC_TZNAME_MAX:
-      return __tzname_max ();
+      return MAX (__tzname_max (), _POSIX_TZNAME_MAX);
 
     case _SC_CHARCLASS_NAME_MAX:
 #ifdef CHARCLASS_NAME_MAX
--- sysdeps/unix/sysv/linux/grantpt.c   Fri Jul  6 06:56:12 2001
+++ sysdeps/unix/sysv/linux/grantpt.c   Wed Dec 19 08:55:13 2001
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -16,6 +16,8 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+#include <errno.h>
+#include <fcntl.h>
 #include <limits.h>
 #include <stdlib.h>
 #include <sys/statfs.h>
@@ -25,7 +27,7 @@
 /* Prototype for function that changes ownership and access permission
    for slave pseudo terminals that do not live on a `devpts'
    filesystem.  */
-int __unix_grantpt (int fd);
+static int __unix_grantpt (int fd);
 
 /* Prototype for private function that gets the name of the slave
    pseudo terminal in a safe way.  */
@@ -45,9 +47,24 @@
 #endif
   char *buf = _buf;
 
-  if (pts_name (fd, &buf, sizeof (_buf)))
-    return -1;
-  
+  if (__builtin_expect (pts_name (fd, &buf, sizeof (_buf)), 0))
+    {
+      int save_errno = errno;
+
+      /* Check, if the file descriptor is valid. pts_name returns the
+        wrong errno number, so we cannot use that.  */
+      if (__libc_fcntl (fd, F_GETFD) == -1 && errno == EBADF)
+       return -1;
+
+      __set_errno (save_errno);
+
+       /* If the filedescriptor is no TTY, grantpt has to set errno
+          to EINVAL.  */
+       if (errno == ENOTTY)
+         __set_errno (EINVAL);
+       return -1;
+    }
+
   if (__statfs (buf, &fsbuf) < 0)
     return -1;
 
@@ -59,5 +76,5 @@
   return __unix_grantpt (fd);
 }
 
-#define grantpt __unix_grantpt
+#define grantpt static __unix_grantpt
 #include <sysdeps/unix/grantpt.c>
--- login/Makefile      Fri Jul  6 06:55:34 2001
+++ login/Makefile      Wed Dec 19 08:54:15 2001
@@ -37,7 +37,7 @@
 subdir-dirs = programs
 vpath %.c programs
 
-tests := tst-utmp tst-utmpx
+tests := tst-utmp tst-utmpx tst-grantpt
 
 # Build the -lutil library with these extra functions.
 extra-libs      := libutil
--- login/tst-grantpt.c Thu Jan  1 01:00:00 1970
+++ login/tst-grantpt.c Wed Dec 19 01:06:45 2001
@@ -0,0 +1,78 @@
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <string.h>
+#include <unistd.h>
+
+static int
+test_ebadf (void)
+{
+  int fd, ret, err;
+
+  fd = posix_openpt (O_RDWR);
+  if (fd == -1)
+    {
+      printf ("posix_openpt(O_RDWR) failed\nerrno %d (%s)\n",
+             errno, strerror (errno));
+      /* We don't fail because of this; maybe the system does not have
+        SUS pseudo terminals.  */
+      return 0;
+    }
+  unlockpt (fd);
+  close (fd);
+
+  ret = grantpt (fd);
+  err = errno;
+  if (ret != -1 || err != EBADF)
+    {
+      printf ("grantpt(): expected: return = %d, errno = %d\n", -1, EBADF);
+      printf ("           got: return = %d, errno = %d\n", ret, err);
+      return 1;
+    }
+  return 0;
+}
+
+static int
+test_einval (void)
+{
+  int fd, ret, err;
+  const char file[] = "./grantpt-einval";
+
+  fd = open (file, O_RDWR | O_CREAT);
+  if (fd == -1)
+    {
+      printf ("open(\"%s\", O_RDWR) failed\nerrno %d (%s)\n",
+             file, errno, strerror (errno));
+      return 0;
+    }
+  unlink (file);
+
+  ret = grantpt (fd);
+  err = errno;
+  if (ret != -1 || err != EINVAL)
+    {
+      printf ("grantpt(): expected: return = %d, errno = %d\n", -1, EINVAL);
+      printf ("           got: return = %d, errno = %d\n", ret, err);
+      ret = 1;
+    }
+  else
+    ret = 0;
+
+  close (fd);
+
+  return ret;
+}
+
+int
+main (void)
+{
+  int result = 0;
+
+  result += test_ebadf ();
+  result += test_einval ();
+
+  return result;
+}
--- io/ftw.c    Tue Dec 11 00:51:23 2001
+++ io/ftw.c    Wed Dec 19 08:54:12 2001
@@ -473,9 +473,6 @@
       return -1;
     }
 
-  if (__access (dir, R_OK) != 0)
-    return -1;
-
   data.maxdir = descriptors < 1 ? 1 : descriptors;
   data.actdir = 0;
   data.dirstreams = (struct dir_data **) alloca (data.maxdir
@@ -552,12 +549,10 @@
           ? LXSTAT (_STAT_VER, data.dirbuf, &st)
           : XSTAT (_STAT_VER, data.dirbuf, &st)) < 0)
        {
-         if (errno == EACCES)
-           result = (*data.func) (data.dirbuf, &st, FTW_NS, &data.ftw);
-         else if (!(flags & FTW_PHYS)
-                  && errno == ENOENT
-                  && LXSTAT (_STAT_VER, dir, &st) == 0
-                  && S_ISLNK (st.st_mode))
+         if (!(flags & FTW_PHYS)
+             && errno == ENOENT
+             && LXSTAT (_STAT_VER, dir, &st) == 0
+             && S_ISLNK (st.st_mode))
            result = (*data.func) (data.dirbuf, &st, data.cvt_arr[FTW_SLN],
                                   &data.ftw);
          else



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to