|
Home About Us A-Z Index Search * Contact Us Register Login Press ShopThe Open Brand -- Problem Reporting and Interpretations System |
Problem Report 1913 Details
Show help | Quick Search | Submit a Test Suite Support Request | Click here to view your privileges
This page provides all information on Problem Report 1913.
Report 1913 Actions
Problem Report Number 1913 Submitter's Classification Test Suite problem State Resolved Resolution Permanent Interpretation (PIN) Problem Resolution ID PIN.X.0232 Raised 2002-10-18 08:00 Updated 2003-03-13 08:00 Published 2002-10-31 08:00 Product Standard Internationalised System Calls and Libraries Extended V2 (UNIX 98) Certification Program The Open Brand certification program Test Suite VSX4 version 4.4.5 Test Identification ANSI.os/time/mktime 18 Specification System Interfaces and Headers Issue 5 Location in Spec See Problem Text Problem Summary PIN5.012 The test failures occur because VSX is testing that '<' and '>' are part of tzname[0] and/or tzname[1]. However: a. This test will not work with POSIX quoted timezones because '<' and '>' are ... Problem Text
The test failures occur because VSX is testing that '<' and '>' are part
of tzname[0] and/or tzname[1]. However:
a. This test will not work with POSIX quoted timezones because
'<' and '>' are the quoting characters.
b. VSX should not be testing for characters that are not explicitly
supported, anyway.
The problem is in tztest() in:
~vsx0/SRC/common/tsetlib/tztest.c: int tztest(funcnam, func)
which is installed from:
VSXgen1.6/SRC/common/tsetlib/tztest.c
As one of its tests, tztest() constructs POSIX timezone strings that
consist of three characters, where the characters range from '\0' to
UCHAR_MAX, except for the characters: ',' (comma), '-' (minus_sign), '+'
(plus_sign), and '\0' (null_character). tztest() sets TZ to the
constructed timezone string, then checks that the standard or daylight
saving timezone name is set to the three characters.
The problem happens when tztest() constructs a timezone that has "<<<"
as either the std or dst portion of the timezone string. After
setting TZ to the timezone string, tztest() expects the standard or
daylight saving timezone name to be set to "<<<". However, when POSIX
quoted timezones are implemented, the leading '<' is supposed to be
interpreted as the quoting character, so the standard or daylight saving
timezone names should not be set to "<<<".
It is questionable that tztest() should test for non-alphabetic
characters anyway, because XBD4.2 specifies that the meaning of
such characters is unspecified:
XBD4.2:
TZ
std and dst
... Upper- and lower-case letters are explicitly
allowed. Any graphic characters except a leading
colon (:) or digits, the comma (,), the minus (-),
the plus (+), and the null character are permitted to
appear in these fields, but their meaning is
unspecified.
Note XBD6 wording for unquoted timezones is similar:
XBD6:
TZ
std and dst
...
- In the unquoted form, all characters in these fields
shall be alphabetic characters ...
The interpretation of these fields is unspecified if ...
they contain characters other than those specified.
The problem described by this report is "fixed" in the new "Westwood"
version of VSX4.5.1 and VSX5.2.1 because tztest() changes a leading
'<' to 'A' when testing for XSH5 and earlier. So, for example, TZ=<<<8
would not be tested, but rather mapped to TZ=AAA8. (It is still
questionable whether VSX should test the non-alpha characters at all.)
This shows the source change:
% diff -c VSXgen{1.6,2.1}/SRC/common/tsetlib/tztest.c
*** VSXgen1.6/SRC/common/tsetlib/tztest.c Mon Aug 14 02:15:56 2000
--- VSXgen2.1/SRC/common/tsetlib/tztest.c Mon May 13 07:40:31 2002
...
***************
*** 214,220 ****
std[3] = '\0';
/* leading colon not allowed */
! if (c == ':')
std[0] = 'A';
(void) strcpy(tz, std);
--- 273,284 ----
std[3] = '\0';
/* leading colon not allowed */
! /*
! * Also avoid a leading '<' in "earlier" modes than
! * UNIX03/POSIX01, to allow for systems which implement
! * the quoted form (as a "future direction").
! */
! if (c == ':' || c == '<')
std[0] = 'A';Test Output
10|13 /tset/ANSI.os/time/ctime/T.ctime 22:28:37|TC Start, scenario ref 15-0
400|13 11 1 22:28:37|IC Start
200|13 11 22:28:37|TP Start
520|13 11 00016009 1 1|with TZ="<<<0" ctime() gave incorrect standard timezone n
ame
520|13 11 00016009 1 2|observed ";;;", expected "<<<"
520|13 11 00016009 1 3|with TZ="XYZ-1:00:00<<<" ctime() gave incorrect daylight
saving timezone name
520|13 11 00016009 1 4|observed " ", expected "<<<"
220|13 11 1 22:28:38|FAIL
410|13 11 1 22:28:38|IC End
10|17 /tset/ANSI.os/time/localtime/T.localtime 22:28:41|TC Start, scenario ref 1
9-0
400|17 11 1 22:28:42|IC Start
200|17 11 22:28:42|TP Start
520|17 11 00016032 1 1|with TZ="<<<0" localtime() gave incorrect standard timezo
ne name
520|17 11 00016032 1 2|observed ";;;", expected "<<<"
520|17 11 00016032 1 3|with TZ="XYZ-1:00:00<<<" localtime() gave incorrect dayli
ght saving timezone name
520|17 11 00016032 1 4|observed " ", expected "<<<"
220|17 11 1 22:28:42|FAIL
10|18 /tset/ANSI.os/time/mktime/T.mktime 22:28:42|TC Start, scenario ref 20-0
400|18 18 1 22:28:43|IC Start
200|18 18 22:28:43|TP Start
520|18 18 00016053 1 1|with TZ="<<<0" mktime() gave incorrect standard timezone
name
520|18 18 00016053 1 2|observed ";;;", expected "<<<"
520|18 18 00016053 1 3|with TZ="XYZ-1:00:00<<<" mktime() gave incorrect daylight
saving timezone name
520|18 18 00016053 1 4|observed " ", expected "<<<"
220|18 18 1 22:28:43|FAIL
410|18 18 1 22:28:43|IC End
10|20 /tset/ANSI.os/time/strftime/T.strftime 22:28:45|TC Start, scenario ref 22-
0
400|20 5 1 22:28:45|IC Start
200|20 5 22:28:45|TP Start
520|20 5 00016064 1 1|with TZ="<<<0" strftime(%Z) gave incorrect standard timezo
ne name
520|20 5 00016064 1 2|observed ";;;", expected "<<<"
520|20 5 00016064 1 3|with TZ="XYZ-1:00:00<<<" strftime(%Z) gave incorrect dayli
ght saving timezone name
520|20 5 00016064 1 4|observed "XYZ", expected "<<<"
220|20 5 1 22:28:45|FAIL
410|20 5 1 22:28:45|IC End
400|20 9 1 22:28:45|IC Start
200|20 9 22:28:45|TP Start
520|20 9 00016065 1 1|with TZ="<<<0" strftime() gave incorrect standard timezone
name
520|20 9 00016065 1 2|observed ";;;", expected "<<<"
520|20 9 00016065 1 3|with TZ="XYZ-1:00:00<<<" strftime() gave incorrect dayligh
t saving timezone name
520|20 9 00016065 1 4|observed " ", expected "<<<"
220|20 9 1 22:28:45|FAIL
410|20 9 1 22:28:45|IC End
10|24 /tset/POSIX.os/Csupport/tzset/T.tzset 22:28:49|TC Start, scenario ref 26-0
15|24 3.3-lite 1|TCM Start
400|24 1 1 22:28:49|IC Start
200|24 1 22:28:49|TP Start
520|24 1 00016079 1 1|with TZ="<<<0" tzset() gave incorrect standard timezone na
me
520|24 1 00016079 1 2|observed ";;;", expected "<<<"
520|24 1 00016079 1 3|with TZ="XYZ-1:00:00<<<" tzset() gave incorrect daylight s
aving timezone name
520|24 1 00016079 1 4|observed " ", expected "<<<"
220|24 1 1 22:28:49|FAIL
410|24 1 1 22:28:49|IC End
10|40 /tset/XPG4.os/wtime/wcsftime/T.wcsftime 22:30:36|TC Start, scenario ref 42
-0
400|40 5 1 05:30:36|IC Start
200|40 5 05:30:36|TP Start
520|40 5 00016161 1 1|with TZ="<<<0" wcsftime(%Z) gave incorrect standard timezo
ne name
520|40 5 00016161 1 2|observed ";;;", expected "<<<"
520|40 5 00016161 1 3|with TZ="XYZ-1:00:00<<<" wcsftime(%Z) gave incorrect dayli
ght saving timezone name
520|40 5 00016161 1 4|observed "XYZ", expected "<<<"
220|40 5 1 05:30:36|FAIL
410|40 5 1 05:30:36|IC EndReview Information
Review Type TSMA Review Start Date null Completed null Status Complete Review Recommendation No Resolution Given Review Response
As POSIX.1-2001 has introduced a new meaning for the '<' character
in the TZ environment variable, UNIX98 systems which implement this
new requirement will fail these tests. It is recommended that
a permanent interpretation is granted to allow for this future
direction.
Review Type SA Review Start Date null Completed null Status Complete Review Resolution Permanent Interpretation (PIN) Review Conclusion
A Permanent Interpretation is granted.
Problem Reporting System Options:
- View Report 1913
- List All PRs
- Search Reports
- Email the System Administrator
- View the The Open Brand Interpretations Database User Manual
Contact the Certification Authority