projects
/
gnulib.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
parse-datetime: fix failure to diagnose invalid input
[gnulib.git]
/
lib
/
parse-datetime.y
diff --git
a/lib/parse-datetime.y
b/lib/parse-datetime.y
index
67669f6
..
4d9f65a
100644
(file)
--- a/
lib/parse-datetime.y
+++ b/
lib/parse-datetime.y
@@
-113,6
+113,11
@@
typedef long int long_time_t;
typedef time_t long_time_t;
#endif
typedef time_t long_time_t;
#endif
+/* Convert a possibly-signed character to an unsigned character. This is
+ a bit safer than casting to unsigned char, since it catches some type
+ errors that the cast doesn't. */
+static inline unsigned char to_uchar (char ch) { return ch; }
+
/* Lots of this code assumes time_t and time_t-like values fit into
long_time_t. */
verify (TYPE_MINIMUM (long_time_t) <= TYPE_MINIMUM (time_t)
/* Lots of this code assumes time_t and time_t-like values fit into
long_time_t. */
verify (TYPE_MINIMUM (long_time_t) <= TYPE_MINIMUM (time_t)
@@
-1171,7
+1176,8
@@
yylex (YYSTYPE *lvalp, parser_control *pc)
}
if (c != '(')
}
if (c != '(')
- return *pc->input++;
+ return to_uchar (*pc->input++);
+
count = 0;
do
{
count = 0;
do
{