* locale/programs/ld-monetary.c (monetary_finish): Avoid range check
authorUlrich Drepper <drepper@redhat.com>
Sat, 28 Jul 2007 20:45:36 +0000 (20:45 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sat, 28 Jul 2007 20:45:36 +0000 (20:45 +0000)
for int_frac_digits and frac_digits.

* login/logout.c (logout): Avoid aliasing violation.
* login/logwtmp.c (logwtmp): Likewise.

* libio/genops.c (_IO_un_link): Avoid aliasing violation.

ChangeLog
libio/genops.c
locale/programs/ld-monetary.c
login/logout.c
login/logwtmp.c
nptl/ChangeLog

index 4dd0649..15c5e84 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2007-07-26  Jakub Jelinek  <jakub@redhat.com>
 
+       * locale/programs/ld-monetary.c (monetary_finish): Avoid range check
+       for int_frac_digits and frac_digits.
+
+       * login/logout.c (logout): Avoid aliasing violation.
+       * login/logwtmp.c (logwtmp): Likewise.
+
+       * libio/genops.c (_IO_un_link): Avoid aliasing violation.
+
        * nscd/selinux.c (preserve_capabilities): Initialize new_caps
        to avoid warning.
        * iconv/gconv_open.c (__gconv_open): Initialize ptr to avoid
index 3f8d71a..7005fdb 100644 (file)
@@ -64,23 +64,29 @@ _IO_un_link (fp)
 {
   if (fp->file._flags & _IO_LINKED)
     {
-      struct _IO_FILE_plus **f;
+      struct _IO_FILE **f;
 #ifdef _IO_MTSAFE_IO
       _IO_cleanup_region_start_noarg (flush_cleanup);
       _IO_lock_lock (list_all_lock);
       run_fp = (_IO_FILE *) fp;
       _IO_flockfile ((_IO_FILE *) fp);
 #endif
-      for (f = &INTUSE(_IO_list_all); *f;
-          f = (struct _IO_FILE_plus **) &(*f)->file._chain)
+      if (INTUSE(_IO_list_all) == NULL)
+       ;
+      else if (fp == INTUSE(_IO_list_all))
        {
-         if (*f == fp)
+         INTUSE(_IO_list_all)
+           = (struct _IO_FILE_plus *) INTUSE(_IO_list_all)->file._chain;
+         ++_IO_list_all_stamp;
+       }
+      else
+       for (f = &INTUSE(_IO_list_all)->file._chain; *f; f = &(*f)->_chain)
+         if (*f == (_IO_FILE *) fp)
            {
-             *f = (struct _IO_FILE_plus *) fp->file._chain;
+             *f = fp->file._chain;
              ++_IO_list_all_stamp;
              break;
            }
-       }
       fp->file._flags &= ~_IO_LINKED;
 #ifdef _IO_MTSAFE_IO
       _IO_funlockfile ((_IO_FILE *) fp);
index e2634bc..b8d291e 100644 (file)
@@ -1,4 +1,5 @@
-/* Copyright (C) 1995-1999,2000,2001,2002,2005 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1999,2000,2001,2002,2005,2007
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
 
@@ -279,13 +280,14 @@ not correspond to a valid name in ISO 4217"),
        monetary->cat = initval;                                                      \
     }                                                                        \
   else if ((monetary->cat < min || monetary->cat > max)                              \
+          && min < max                                                       \
           && !be_quiet && !nothing)                                          \
     WITH_CUR_LOCALE (error (0, 0, _("\
 %s: value for field `%s' must be in range %d...%d"),                         \
                            "LC_MONETARY", #cat, min, max))
 
-  TEST_ELEM (int_frac_digits, -128, 127, -1);
-  TEST_ELEM (frac_digits, -128, 127, -1);
+  TEST_ELEM (int_frac_digits, 1, 0, -1);
+  TEST_ELEM (frac_digits, 1, 0, -1);
   TEST_ELEM (p_cs_precedes, -1, 1, -1);
   TEST_ELEM (p_sep_by_space, -1, 2, -1);
   TEST_ELEM (n_cs_precedes, -1, 1, -1);
index 020ff61..8902036 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 2002, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
@@ -51,15 +51,10 @@ logout (const char *line)
       bzero (ut->ut_host, sizeof ut->ut_host);
 #endif
 #if _HAVE_UT_TV - 0
-  if (sizeof (ut->ut_tv) == sizeof (struct timeval))
-    __gettimeofday ((struct timeval *) &ut->ut_tv, NULL);
-  else
-    {
       struct timeval tv;
       __gettimeofday (&tv, NULL);
       ut->ut_tv.tv_sec = tv.tv_sec;
       ut->ut_tv.tv_usec = tv.tv_usec;
-    }
 #else
       ut->ut_time = time (NULL);
 #endif
index 96ef05d..ff2e7f9 100644 (file)
@@ -44,15 +44,10 @@ logwtmp (const char *line, const char *name, const char *host)
 #endif
 
 #if _HAVE_UT_TV - 0
-  if (sizeof (ut.ut_tv) == sizeof (struct timeval))
-    __gettimeofday ((struct timeval *) &ut.ut_tv, NULL);
-  else
-    {
-      struct timeval tv;
-      __gettimeofday (&tv, NULL);
-      ut.ut_tv.tv_sec = tv.tv_sec;
-      ut.ut_tv.tv_usec = tv.tv_usec;
-    }
+  struct timeval tv;
+  __gettimeofday (&tv, NULL);
+  ut.ut_tv.tv_sec = tv.tv_sec;
+  ut.ut_tv.tv_usec = tv.tv_usec;
 #else
   ut.ut_time = time (NULL);
 #endif
index 84681bb..9b5a1ba 100644 (file)
@@ -1,3 +1,7 @@
+2007-07-26  Jakub Jelinek  <jakub@redhat.com>
+
+       * tst-locale2.c (useless): Add return statement.
+
 2007-07-24  Jakub Jelinek  <jakub@redhat.com>
 
        * allocatestack.c (__nptl_setxid, __wait_lookup_done): Replace