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

The Open Brand -- Problem Reporting and Interpretations System


Problem Report 1976 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 1976.


Report 1976 Actions


    Problem Report Number 1976
    Submitter's Classification Test Suite problem
    State Resolved
    Resolution Permanent Interpretation (PIN)
    Problem Resolution ID PIN.X.0239
    Raised 1996-11-21 08:00
    Updated 2003-03-13 08:00
    Published 1996-12-06 08:00
    Product Standard Transport Service XTI
    Certification Program The Open Brand certification program
    Test Suite VST version 4.1.4
    Test Identification XTI.os/cots/accept 17,18
    Specification Networking Services Issue 4
    Location in Spec See Problem Text
    Linked Problem Reports PINT4san.003, (in, old, system)
    Problem Summary PINT4.005 This request is to seek waiver for included results for test cases T.accept 17 and T.accept 18. (The reason can also be considered a Grey area in the specification) This technical rationale for this w...
    Problem Text

    This request is to seek waiver for included results for test cases
    T.accept 17 and T.accept 18.

    (The reason can also be considered a Grey area in the specification)

    This technical rationale for this waiver is identical to the technical
    rationale for Waiver with Interpretation Reference PINT4san.003 which
    is against Test Case XTI.os/cots/accept Test No. 21. While the problem
    results in an unmapped memory reference leading to a segment violation
    (SIGSEGV) in that test case (presumably because of opt.len field being
    non-zero), in this test case the results are different
    (a TBADDATA error) because of udata.len field being non-zero
    but the root cause is very similar.

    The test case passes a "struct t_call" data structure to to t_listen()
    over TCP transport which has for its userdata ("udata") member
    "struct netbuf" with only "maxlen" field set to 0 and "len" field
    uninitialized. In our implementation because of the same grey area in
    the spec already discussed in the PINT4san.003, the subsequent call to
    t_accept() passes and uninitialized "len" field in the
    "udata" member of "struct t_call" parameter to t_accept().

    This uninitialized value of udata.len is not zero and runs into a check in
    the t_accept() which over TCP transport verifies that no user data is
    sent and returns TBADDATA for what appears to be an attempt to send
    user data.

    The following modification to the test suite code in file
    SRC/common/tsetlib/provsetup.c subroutine do_incon() similar to
    that suggested in waiver PINT4san.003 when performed makes the
    implementation PASS the test suite.

    private int
    do_incon(fd, curr_prov, callret)

    ......
    if (callret != NULL)
    {
    callret->opt.buf = NULL;
    callret->opt.maxlen = 0;
    callret->udata.buf = NULL;
    callret->udata.maxlen = 0;
    callret->udata.len = 0; <====== NEW
    if (addralloc(&callbuf, &callret->addr) != 0)
    DBUG_RETURN(-1);
    else
    PATH_TRACE;
    }
    ......
    }

    The test results after this modification from the journal are as follows

    400|9 17 1 09:12:54|IC Start
    200|9 17 09:12:54|TP Start
    220|9 17 0 09:12:54|PASS
    410|9 17 1 09:12:54|IC End
    400|9 18 1 09:12:54|IC Start
    200|9 18 09:12:54|TP Start
    220|9 18 0 09:12:55|PASS
    410|9 18 1 09:12:55|IC End


    Test Output

    /tset/XTI.os/cots/accept/T.accept 17 Failed

    Test Description:
    If the implementation supports a connection-oriented transport service
    which supports one or more options that are read-only in the T_INCON
    or T_IDLE states:
    When t_accept() is called and the specified options include a
    request to negotiate a read-only option, then either
    a. t_accept() returns (int)-1, sets t_errno to TACCES, and the
    states of the endpoints fd and resfd are not changed; or
    b. a T_DISCONNECT event occurs during the call, t_accept() returns
    (int)-1 and sets t_errno to TLOOK, and the states of the endpoints
    fd and resfd are not changed; or
    c. t_accept() returns (int)0 and a T_DISCONNECT event occurs after
    the call has returned.

    Test Strategy:
    VERIFY that the transport service is of type T_COTS or T_COTS_ORD
    OBTAIN an endpoint in T_INCON state using provsetup()
    OPEN a second endpoint using t_open()
    INITIALISE second endpoint using u_provinit()
    INITIALISE call->opt with options returned by u_r_o_opt()
    ACCEPT connection using t_accept() with resfd as second endpoint
    VERIFY that t_accept() either returns 0, or returns -1 and sets
    t_errno to TACCES or TLOOK
    IF return is -1:
    IF t_errno is TLOOK:
    VERIFY that t_look() returns T_DISCONNECT
    VERIFY that the states of the endpoints have not changed
    OTHERWISE:
    VERIFY that t_snd() returns -1 and sets t_errno to TLOOK
    VERIFY that t_look() returns T_DISCONNECT

    Test Information:
    t_accept() on TCP endpoint returned -1 with t_errno 10 (TBADDATA)
    expected return 0, or return -1 with t_errno 3 (TACCES) or 9 (TLOOK)
    ************************************************************************

    ************************************************************************
    /tset/XTI.os/cots/accept/T.accept 18 Failed

    Test Description:
    If the implementation supports a connection-oriented transport
    service:
    When t_accept() is called and the specified options are in an
    incorrect format or contain illegal information, then either
    a. t_accept() returns (int)-1, sets t_errno to TBADOPT, and the
    states of the endpoints fd and resfd are not changed; or
    b. a T_DISCONNECT event occurs during the call, t_accept() returns
    (int)-1 and sets t_errno to TLOOK, and the states of the endpoints
    fd and resfd are not changed; or
    c. t_accept() returns (int)0 and a T_DISCONNECT event occurs after
    the call has returned.

    Test Strategy:
    VERIFY that the transport service is of type T_COTS or T_COTS_ORD
    OBTAIN an endpoint in T_INCON state using provsetup()
    OPEN a second endpoint using t_open()
    INITIALISE second endpoint using u_provinit()
    GENERATE an option buffer containing an option whose length exceeds
    the length of the buffer
    ACCEPT connection using t_accept() with resfd as second endpoint
    VERIFY that t_accept() either returns 0, or returns -1 and sets
    t_errno to TBADOPT or TLOOK
    IF return is -1:
    IF t_errno is TLOOK:
    VERIFY that t_look() returns T_DISCONNECT
    VERIFY that the states of the endpoints have not changed
    OTHERWISE:
    VERIFY that t_snd() returns -1 and sets t_errno to TLOOK
    VERIFY that t_look() returns T_DISCONNECT

    Test Information:
    t_accept() on TCP endpoint returned -1 with t_errno 10 (TBADDATA)
    expected return 0, or return -1 with t_errno 2 (TBADOPT) or 9 (TLOOK)
    ************************************************************************


    Review Information

    Review Type TSMA Review
    Start Date null
    Completed null
    Status Complete
    Review Recommendation No Resolution Given
    Review Response
    This is another instance of the problem specified in req.xti.4.1.038
    which resulted in the grant of the permanent interpretation PINT4.004
    after consideration by the XNET working group as detailed in XoTGnet5829.

    It is recommended that a Permanent Interpretation is issued.

    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