From e71e29e309ed0b3282a5ff56f759cd243dc2b712 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 2 Aug 2004 20:34:27 +0000 Subject: (posix_time_parse): Don't assume that the length of the string being parsed is <= UINT_MAX. --- lib/posixtm.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'lib/posixtm.c') diff --git a/lib/posixtm.c b/lib/posixtm.c index 7ddf182ff..22f636ebb 100644 --- a/lib/posixtm.c +++ b/lib/posixtm.c @@ -1,5 +1,7 @@ /* Parse dates for touch and date. - Copyright (C) 1989, 1990, 1991, 1998, 2000-2003 Free Software Foundation Inc. + + Copyright (C) 1989, 1990, 1991, 1998, 2000, 2001, 2002, 2003, 2004 + Free Software Foundation Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -45,7 +47,7 @@ POSIX says that only '0' through '9' are digits. Prefer ISDIGIT to ISDIGIT_LOCALE unless it's important to use the locale's definition of `digit' even when the host does not conform to POSIX. */ -#define ISDIGIT(c) ((unsigned) (c) - '0' <= 9) +#define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9) time_t mktime (); @@ -113,7 +115,7 @@ posix_time_parse (struct tm *tm, const char *s, unsigned int syntax_bits) const char *dot = NULL; int pair[6]; int *p; - unsigned int i; + size_t i; size_t s_len = strlen (s); size_t len = (((syntax_bits & PDS_SECONDS) && (dot = strchr (s, '.'))) @@ -304,7 +306,7 @@ main (void) { printf ("%-15s %2u ", time_str, syntax_bits); if (posixtime (&t, time_str, syntax_bits)) - printf ("%12ld %s", (long) t, ctime (&t)); + printf ("%12ld %s", (long int) t, ctime (&t)); else printf ("%12s %s", "*", "*\n"); } -- cgit v1.2.3-54-g00ecf