diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2004-08-02 20:34:27 +0000 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2004-08-02 20:34:27 +0000 |
commit | e71e29e309ed0b3282a5ff56f759cd243dc2b712 (patch) | |
tree | 495bf9ed9cff0d76834794148716d92f4073c097 /lib | |
parent | 25d291e3ecb447937c243c32893949ebce7a26fe (diff) | |
download | coreutils-e71e29e309ed0b3282a5ff56f759cd243dc2b712.tar.xz |
(posix_time_parse): Don't assume that the length of
the string being parsed is <= UINT_MAX.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/posixtm.c | 10 |
1 files changed, 6 insertions, 4 deletions
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"); } |