mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 12:30:06 +00:00
[BZ #2821]
* time/mktime.c (guess_time_tm): Fix overflow detection. * time/Makefile (tests): Add bug-mktime1. * time/bug-mktime1.c: New file.
This commit is contained in:
parent
eaa51b472c
commit
41aba3d764
@ -1,5 +1,10 @@
|
|||||||
2006-09-09 Ulrich Drepper <drepper@redhat.com>
|
2006-09-09 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
[BZ #2821]
|
||||||
|
* time/mktime.c (guess_time_tm): Fix overflow detection.
|
||||||
|
* time/Makefile (tests): Add bug-mktime1.
|
||||||
|
* time/bug-mktime1.c: New file.
|
||||||
|
|
||||||
[BZ #3189, #3188]
|
[BZ #3189, #3188]
|
||||||
* misc/sys/mman.h (remap_file_pages): Make available for _GNU_SOURCE.
|
* misc/sys/mman.h (remap_file_pages): Make available for _GNU_SOURCE.
|
||||||
(mremap): Likewise.
|
(mremap): Likewise.
|
||||||
|
@ -35,7 +35,7 @@ distribute := datemsk
|
|||||||
|
|
||||||
tests := test_time clocktest tst-posixtz tst-strptime tst_wcsftime \
|
tests := test_time clocktest tst-posixtz tst-strptime tst_wcsftime \
|
||||||
tst-getdate tst-mktime tst-mktime2 tst-ftime_l tst-strftime \
|
tst-getdate tst-mktime tst-mktime2 tst-ftime_l tst-strftime \
|
||||||
tst-mktime3 tst-strptime2 bug-asctime bug-asctime_r
|
tst-mktime3 tst-strptime2 bug-asctime bug-asctime_r bug-mktime1
|
||||||
|
|
||||||
include ../Rules
|
include ../Rules
|
||||||
|
|
||||||
|
17
time/bug-mktime1.c
Normal file
17
time/bug-mktime1.c
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
do_test (void)
|
||||||
|
{
|
||||||
|
struct tm t2 = { 0, 0, 0, 1, 1, 2050 - 1900, 1, 1, 1 };
|
||||||
|
time_t tt2 = mktime (&t2);
|
||||||
|
printf ("%ld\n", (long int) tt2);
|
||||||
|
if (sizeof (time_t) == 4 && tt2 != -1)
|
||||||
|
return 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define TEST_FUNCTION do_test ()
|
||||||
|
#include "../test-skeleton.c"
|
@ -1,7 +1,7 @@
|
|||||||
/* Convert a `struct tm' to a time_t value.
|
/* Convert a `struct tm' to a time_t value.
|
||||||
Copyright (C) 1993-1999, 2002-2004, 2005 Free Software Foundation, Inc.
|
Copyright (C) 1993-1999, 2002-2005, 2006 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Paul Eggert (eggert@twinsun.com).
|
Contributed by Paul Eggert <eggert@twinsun.com>.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU Lesser General Public
|
modify it under the terms of the GNU Lesser General Public
|
||||||
@ -216,10 +216,11 @@ guess_time_tm (long int year, long int yday, int hour, int min, int sec,
|
|||||||
/* Overflow occurred one way or another. Return the nearest result
|
/* Overflow occurred one way or another. Return the nearest result
|
||||||
that is actually in range, except don't report a zero difference
|
that is actually in range, except don't report a zero difference
|
||||||
if the actual difference is nonzero, as that would cause a false
|
if the actual difference is nonzero, as that would cause a false
|
||||||
match. */
|
match; and don't oscillate between two values, as that would
|
||||||
|
confuse the spring-forward gap detector. */
|
||||||
return (*t < TIME_T_MIDPOINT
|
return (*t < TIME_T_MIDPOINT
|
||||||
? TIME_T_MIN + (*t == TIME_T_MIN)
|
? (*t <= TIME_T_MIN + 1 ? *t + 1 : TIME_T_MIN)
|
||||||
: TIME_T_MAX - (*t == TIME_T_MAX));
|
: (TIME_T_MAX - 1 <= *t ? *t - 1 : TIME_T_MAX));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Use CONVERT to convert *T to a broken down time in *TP.
|
/* Use CONVERT to convert *T to a broken down time in *TP.
|
||||||
|
Loading…
Reference in New Issue
Block a user