HomeAbout Us A-Z IndexSearch * Contact Us Register LoginPress Shop

The Open Brand -- Problem Reporting and Interpretations System


Problem Report 1913 Details

Help 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 End

    Review 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:

     

    Back   


Contact the Certification Authority