From b054baf590e3ecafd9428d20961a1232681d1f7e Mon Sep 17 00:00:00 2001 From: Dianne Skoll Date: Wed, 11 Sep 2024 09:01:52 -0400 Subject: [PATCH] Stricter tokenization of datetime --- src/expr.c | 1 + src/token.c | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/expr.c b/src/expr.c index b86d0414..91d845ef 100644 --- a/src/expr.c +++ b/src/expr.c @@ -3061,6 +3061,7 @@ int DoCoerce(char type, Value *v) case STR_TYPE: s = v->v.str; + i=0; /* Avoid compiler warning */ if (ParseLiteralTime(&s, &i)) return E_CANT_COERCE; if (*s) return E_CANT_COERCE; v->type = TIME_TYPE; diff --git a/src/token.c b/src/token.c index 17de9f31..3aff8b1a 100644 --- a/src/token.c +++ b/src/token.c @@ -246,7 +246,14 @@ void FindNumericToken(char const *s, Token *t) int dse, tim; r = ParseLiteralDate(&p, &dse, &tim); if (r == OK) { - if (*p) return; + if (*p) { + if (tim == NO_TIME) { + t->val = -E_BAD_DATE; + } else { + t->val = -E_BAD_TIME; + } + return; + } if (tim == NO_TIME) { t->type = T_Date; t->val = dse;