|
Home About Us A-Z Index Search * Contact Us Register Login Press ShopThe Open Brand -- Problem Reporting and Interpretations System |
Problem Report 1409 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 1409.
Report 1409 Actions
Problem Report Number 1409 Submitter's Classification Test Suite problem State Resolved Resolution Test Suite Deficiency (TSD) Problem Resolution ID TSD.X.0691 Raised 1970-01-01 08:00 Updated 2003-03-13 08:00 Published 1996-04-19 08:00 Product Standard Internationalised System Calls and Libraries Extended (UNIX 95) Certification Program The Open Brand certification program Test Suite VSU version 4.1.0 Test Identification base/readv 45 Problem Summary TSD4U.00124 This test may fail on non-ASCII IUTs. Problem Text
This test may fail on non-ASCII IUTs.
This assertion as written is non-portable to a non-ASCII platform.
This assertions is failing because there is ASCII specific code in
unix_server (found in TET_ROOT/CAPI/SRC/LIB/capi_sock/unix.c).
Specifically, the block of code that "clears trash from peer name",
is changing the contents of from.sun_path so that the server's sendto()
echos the data to the wrong path name, and the subsequent readv()
done by the client waits and waits until it eventually fails EINTR
due to the fact that the SET_ALARM(), CLEAR_ALARM block sends a
SIGALRM.
For example, suppose from.sun_path was ../tmp/uclient.ccdDxQ
which on our ASCII platform is represented as follows:
. . / t m p / u c l i e n t . c c d D x Q
4B4B61A3949761A48393898595A34B838384C4A7D8
Since A3 (t) is outside of the range (0x20,0x7e) this is substitued
with 0, and the value of from.sun_path is corrupted, causing the
data echoed via sendto() to never get to the intended client.
(Note that this is not the same value of sun_path as in the
journal file included... this was from a different run, and this
value is different for each run.)
Here is a snippet of the offending code:
if ((n=recvfrom(s, buf, len, 0, (struct sockaddr *)&from, &flen)) > 0 && !(flags & SV_NOECHO)) {
/*clear trash from peer name*/
for (i = 0, p=from.sun_path; i < sizeof(from.sun_path); i++, p++)
if ((*p < 0x20) || (*p > 0x7e))
*p = 0;
(void) sendto(s, buf, n, 0, (struct sockaddr *) &from, flen);
if (n < 256) {
buf[n] = 0;
sprintf((char *)&ebuf[0], "INFO: Server: echoed %d bytes of data (%s), peer is %s", n, buf, from.sun_path);
}
else {
buf[256] = 0;
sprintf((char *)&ebuf[0], "INFO: Server: echoed %d bytes of data (%s <truncated to 256 bytes>), peer is %s", n, buf, from.sun_path);
}
tet_infoline(ebuf);
}Test Output
SPEC1170TESTSUITE CASE 45
If the implementation supports a communications domain
and a socket type:
A call to ssize_t readv(int fildes, const struct iovec
*iov, int iovcnt) when fildes refers to a socket,
O_NONBLOCK is not set for fildes, and no messages are
available at the socket shall block until a message
arrives.
TEST: AF_INET SOCK_STREAM
PREP: Create test sockaddr_in: address = 198.151.241.50, port = 2365
PREP: Wait for server to be ready
PREP: Create a socket
PREP: Connect socket to address 198.151.241.50, port 2365
PREP: Zero receive buffer
PREP: Send test data, with a short delay
TEST: Receive blocks until message recevied
TEST: Duration of blocking
TEST: Duration of blocking
TEST: Compare data
CLEANUP: Close socket, kill server
TEST: AF_UNIX SOCK_STREAM
PREP: Create test sockaddr_un: path = ../tmp/unix.eBfaxQ
PREP: Server: create socket
PREP: Server: bind address 198.151.241.50, port 2365 to socket
PREP: Server: listen on socket
PREP: Server: notify client server is ready
PREP: Server: accept connection
INFO: Server: accepted connection from address 198.151.241.50, port 1
PREP: echo_server: read and echo data
INFO: echo_server: echoed 11 bytes of data (ABC123TEST!)
INFO: Server received signal 15
INFO: Server terminated
PREP: Wait for server to be ready
PREP: Create a socket
PREP: Bind address ../tmp/uclient.cDdBxQ to socket
PREP: Connect to address ../tmp/unix.eBfaxQ
PREP: Zero receive buffer
PREP: Send test data, with a short delay
TEST: Receive blocks until message received
TEST: Return value
TEST: Duration of blocking
TEST: Compare data
CLEANUP: Close socket, kill server
TEST: AF_INET SOCK_DGRAM
PREP: Create test sockaddr_in: address = 198.151.241.50, port = 236
PREP: Server: create socket
PREP: Server: bind address ../tmp/unix.eBfaxQ to socket
PREP: Server: listen on socket
PREP: Server: notify client ready to accept
PREP: Server: accept connection
INFO: Server: accepted connection from address ../tmp/uclient.cDdBxQ
PREP: echo_server: read and echo data
INFO: echo_server: echoed 11 bytes of data (ABC123TEST!)
INFO: Server received signal 15
INFO: Server terminated
PREP: Wait for server to be ready
PREP: Create a socket
PREP: Connect socket to address 198.151.241.50, port 2366
PREP: Zero receive buffer
PREP: Send test data, with a short delay
TEST: Receive blocks until message recevied
TEST: Duration of blocking
TEST: Compare data
CLEANUP: Close socket, kill server
TEST: AF_UNIX SOCK_DGRAM
PREP: Create test sockaddr_un: path = ../tmp/unix.BagDxQ
PREP: Server: create socket
PREP: Server: bind address 198.151.241.50, port 2366 to socket
PREP: Server: notify client server is ready
PREP: Server: read and echo data
INFO: Server: echoed 11 bytes of data (ABC123TEST!), peer is 198.151.
INFO: Server received signal 15
INFO: Server terminated
PREP: Wait for server to be ready
PREP: Create a socket
PREP: Bind address ../tmp/uclient.DHFfxQ to socket
PREP: Connect to address ../tmp/unix.BagDxQ
PREP: Zero receive buffer
PREP: Send test data, with a short delay
TEST: Receive blocks until message received
TEST: Return value
ERROR: read call failed, errno = 120(EINTR - Interrupted system call
CLEANUP: Send SIGTERM to server
PREP: Server: create socket
PREP: Server: bind address ../tmp/unix.BagDxQ to socket
PREP: Server: notify client server is ready
PREP: Server: read and echo data
INFO: Server: echoed 11 bytes of data (ABC123TEST!), peer is ../
INFO: Server received signal 15
INFO: Server terminated
FAIL
IC EndReview Information
Review Type TSMA Review Start Date null Completed null Status Complete Review Recommendation No Resolution Given Review Response
We agree this is a test suite deficiency in the test
suite version(s) listed.
Review Type SA Review Start Date null Completed null Status Complete Review Resolution Test Suite Deficiency (TSD) Review Conclusion
This is an agreed Test Suite Deficiency.
Problem Reporting System Options:
- View Report 1409
- List All PRs
- Search Reports
- Email the System Administrator
- View the The Open Brand Interpretations Database User Manual
Contact the Certification Authority