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

The Open Brand -- Problem Reporting and Interpretations System


Problem Report 1409 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 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 End

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

     

    Back   


Contact the Certification Authority