|
Home About Us A-Z Index Search * Contact Us Register Login Press ShopThe Open Brand -- Problem Reporting and Interpretations System |
Problem Report 1976 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 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 EndTest 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:
- View Report 1976
- List All PRs
- Search Reports
- Email the System Administrator
- View the The Open Brand Interpretations Database User Manual
Contact the Certification Authority