summaryrefslogtreecommitdiff
path: root/lib/posixtm.c
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2004-08-02 20:34:27 +0000
committerPaul Eggert <eggert@cs.ucla.edu>2004-08-02 20:34:27 +0000
commite71e29e309ed0b3282a5ff56f759cd243dc2b712 (patch)
tree495bf9ed9cff0d76834794148716d92f4073c097 /lib/posixtm.c
parent25d291e3ecb447937c243c32893949ebce7a26fe (diff)
downloadcoreutils-e71e29e309ed0b3282a5ff56f759cd243dc2b712.tar.xz
(posix_time_parse): Don't assume that the length of
the string being parsed is <= UINT_MAX.
Diffstat (limited to 'lib/posixtm.c')
-rw-r--r--lib/posixtm.c10
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");
}