[tz] [PATCH 1/5] tzselect.ksh: TZ validation bugs
J William Piggott
elseifthen at gmx.com
Wed Jan 20 16:32:54 UTC 2016
This commit fixes the following POSIX TZ validation
bugs in tzselect.ksh.
Did not allow:
TZ name quoting (<, >): TZ="<EST+5>5"
Allowed:
TZ name == Non-alpha characters: TZ="E!T5"
Time > 24 hours
Julian date == J0
Julian date > J365
Julian date > 365
Month date > M12.x.x
Month date > Mx.5.x
Month date > Mx.x.6
Month date < M1.x.x
Month date < Mx.1.x
Signed-off-by: J William Piggott <elseifthen at gmx.com>
---
tzselect.ksh | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/tzselect.ksh b/tzselect.ksh
index df5621f..10570b6 100644
--- a/tzselect.ksh
+++ b/tzselect.ksh
@@ -346,11 +346,14 @@ while
'that is 10 hours ahead (east) of UTC.'
read TZ
$AWK -v TZ="$TZ" 'BEGIN {
- tzname = "[^-+,0-9][^-+,0-9][^-+,0-9]+"
- time = "[0-2]?[0-9](:[0-5][0-9](:[0-5][0-9])?)?"
+ tzname = "(<[[:alnum:]+-]{3,}>|[[:alpha:]]{3,})"
+ time = "(2[0-4]|[0-1]?[0-9])" \
+ "(:[0-5][0-9](:[0-5][0-9])?)?"
offset = "[-+]?" time
- date = "(J?[0-9]+|M[0-9]+\\.[0-9]+\\.[0-9]+)"
- datetime = "," date "(/" time ")?"
+ mdate = "M([1-9]|1[0-2])\\.[1-5]\\.[0-6]"
+ jdate = "((J[1-9]|[0-9]|J?[1-2]?[0-9][0-9])" \
+ "|J?3[0-5][0-9]|J?36[0-5])"
+ datetime = ",(" mdate "|" jdate ")(/" time ")?"
tzpattern = "^(:.*|" tzname offset "(" tzname \
"(" offset ")?(" datetime datetime ")?)?)$"
if (TZ ~ tzpattern) exit 1
More information about the tz
mailing list