glibc/time/bug-asctime.c
Ulrich Drepper ce982312e8 [BZ #1460]
* time/asctime.c (asctime_internal): New function, derived from
	asctime_r.  Takes additional parameter which is the buffer length.
	Use snprintf instead sprintf, if it overflows, fail.
	(asctime_r): Call asctime_internal with 26 as buffer length.
	(asctime): Call asctime_internal with length of internal buffer.
	* time/Makefile (tests): Add bug-asctime_r.
	* time/bug-asctime_r.c: New file.
2005-10-14 15:17:40 +00:00

34 lines
623 B
C

#include <errno.h>
#include <limits.h>
#include <stdio.h>
#include <time.h>
static int
do_test (void)
{
int result = 0;
time_t t = time (NULL);
struct tm *tp = localtime (&t);
tp->tm_year = INT_MAX;
errno = 0;
char *s = asctime (tp);
if (s != NULL || errno != EOVERFLOW)
{
puts ("asctime did not fail correctly");
result = 1;
}
char buf[1000];
errno = 0;
s = asctime_r (tp, buf);
if (s != NULL || errno != EOVERFLOW)
{
puts ("asctime_r did not fail correctly");
result = 1;
}
return result;
}
#define TEST_FUNCTION do_test ()
#include "../test-skeleton.c"