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

The Open Brand -- Problem Reporting and Interpretations System


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


Report 0528 Actions


    Problem Report Number 0528
    Submitter's Classification Test Suite problem
    State Resolved
    Resolution Rejected (REJ)
    Problem Resolution ID REJ.X.0147
    Raised 2001-10-02 08:00
    Updated 2003-03-13 08:00
    Published null
    Product Standard Network File System
    Certification Program The Open Brand certification program
    Test Suite VSX4+XNFS version 4.4.5
    Test Identification XOPEN.os/streamio/tempnam 4,5,6,7
    Problem Summary PG4R.148 According to the release notes for VSX+NFS 4.4.5, the following is stated "... however please note that although the XNFS tests are aligned with the current XNFS specification(version 3W), they provid...
    Problem Text

    According to the release notes for VSX+NFS 4.4.5, the following is stated

    "... however please note that although the XNFS tests are aligned with the
    current XNFS specification(version 3W), they provide coverage of XSH3 interfaces
    in the API tests, and of NFSV2 in the protocol tests."

    Our implementation is NFS V2 based and the above tests fail because of
    differences between the V2 and V3 specs in this area. tempnam() is usually
    coded to use access() to determine the permissions of the directory. On V3
    there is an rpc access call defined for use across the mounted Filesystems.
    But on V2 the access check is done locally. The test is running as SUID and
    as such there are no unaccessable directories so tempnam() will not return
    a pathname starting with P_tmpdir.
    Test Output
    ************************************************************************
    /tset/XOPEN.os/streamio/tempnam/T.tempnam 4 Failed

    Test Description:
    For the XNFS specification:
    When the dir argument to tempnam() refers to a directory on a
    remote file system and access to the directory is denied after the
    process's effective user ID has been subject to the server's user
    ID mapping process, then tempnam() returns a pointer to a file
    name whose path prefix is equal to the directory specified by
    {P_tmpdir}.
    Test requirements: Test cases where the server both maps and does
    not map the process's effective user ID.
    For the XSH specification:
    If dir is not the name of an accessible directory then the path
    name specified by {P_tmpdir} is added to the filename created by
    tempnam().

    Test Strategy:
    WHEN testing the XNFS specification:
    PARENT process will
    CREATE [child process|process pair]
    CHILD process will
    CHANGE the root directory to be on the remote file system
    CREATE the directory pointed to by P_tmpdir
    CREATE directory using crdir() - setting mode to 0
    OBTAIN a suitable name for a temporary file using tempnam()
    VERIFY that when the uid is mapped, that path name contains
    directory as specified by P_tmpdir
    CHANGE effective uid to real uid using setuid()
    OBTAIN a suitable name for a temporary file using tempnam()
    VERIFY that when the uid is not mapped, that path name contains
    directory as specified by P_tmpdir
    WHEN testing the XSH specification:
    CREATE directory using crdir()
    REMOVE directory using rmdir()
    OBTAIN a suitable name for a temporary file using tempnam()
    VERIFY that path name contains directory as specified by P_tmpdir

    Test Information:
    tempnam(dir, NULL) when dir was not accessable, did not return a string
    starting with P_tmpdir/

    ************************************************************************
    ************************************************************************
    /tset/XOPEN.os/streamio/tempnam/T.tempnam 5 Failed

    Test Description:
    For the XNFS specification:
    When {P_tmpdir} refers to a directory on a remote filesystem, and
    the dir argument to tempnam() is a NULL pointer and access to the
    directory specified by {P_tmpdir} is denied after the process's
    effective user ID has been subject to the server's user ID mapping
    process, then tempnam() returns a pointer to a file name whose
    path prefix refers to an implementation-defined directory name.
    Test requirements: Test cases where the server both maps and does
    not map the process's effective user ID.
    For the XSH specification:
    If dir is a NULL pointer and the path name specified by {P_tmpdir}
    is not accessible then an implementation defined directory is
    added to the filename created by tempnam().

    Test Strategy:
    PARENT process will
    CREATE [child process|process pair]
    CHILD process will
    CREATE test program using execl()
    CREATE temporary directory and make it the current working
    directory using chdir()
    REQUEST/VERIFY the NEWROOT and CHOWN privileges for the current
    process using setprv() - vport
    WHEN testing the XNFS specification:
    Change root to the current directory using newroot() - vport
    CREATE directory P_tmpdir, setting mode to 0
    CALL tempnam() with a directory name of NULL
    VERIFY that when uid is mapped, that returned path name is a
    valid directory
    CHANGE effective uid to real uid using setuid()
    CALL tempnam() with a directory name of NULL
    VERIFY that when uid is not mapped, that returned path name is a
    valid directory
    WHEN testing the XSH specification:
    Change root to the current directory using newroot() - vport,
    thus making P_tmpdir inaccessible
    CALL tempnam() with a directory name of NULL
    VERIFY that returned path name is a valid directory

    Test Information:
    the write permissions for the directory (/tmp) returned by tempnam()
    were incorrect
    tempnam() returned NULL pointer

    ************************************************************************
    ************************************************************************
    /tset/XOPEN.os/streamio/tempnam/T.tempnam 6 Failed

    Test Description:
    For the XNFS specification:
    When the dir argument to tempnam() refers to a directory on a
    remote file system and access to both that directory and the
    directory specified by {P_tmpdir} is denied after the process's
    effective user ID has been subject to the server's user ID mapping
    process, then tempnam() returns a pointer to a file name whose
    path prefix refers to an implementation-defined directory name.
    Test requirements: Test cases where the server both maps and does
    not map the process's effective user ID.
    For the XSH specification:
    If dir and {P_tmpdir} are both names of inaccessible directories
    then an implementation defined directory is added to the filename
    created by tempnam().

    Test Strategy:
    PARENT process will
    CREATE [child process|process pair]
    CHILD process will
    CREATE test program using execl()
    CREATE temporary directory and make it the current working
    directory using chdir()
    REQUEST/VERIFY the NEWROOT and CHOWN privileges for the current
    process using setprv() - vport
    WHEN testing the XNFS specification:
    Change root to the current directory using newroot() - vport
    CREATE directory P_tmpdir, setting mode to 0
    CREATE second temporary directory using crdir(), setting mode to
    0
    CALL tempnam() with second temporary directory name as argument
    VERIFY that when uid is mapped, that returned path name is a
    valid directory
    CHANGE effective uid to real uid using setuid()
    CALL tempnam() with second temporary directory name as argument
    VERIFY that when uid is not mapped, that returned path name is a
    valid directory
    WHEN testing the XSH specification:
    Change root to the current directory using newroot() - vport,
    thus making P_tmpdir inaccessible
    CREATE second temporary directory using crdir()
    REMOVE second temporary directory using rmdir()
    CALL tempnam() with second temporary directory name as argument
    VERIFY that returned path name is a valid directory

    Test Information:
    the write permissions for the directory (./tempnam-d.6) returned by
    tempnam() were incorrect
    tempnam() returned NULL pointer

    ************************************************************************
    ************************************************************************
    /tset/XOPEN.os/streamio/tempnam/T.tempnam 7 Unresolved

    Test Description:
    For the XNFS specification:
    When the dir argument to tempnam() refers to a directory on a
    remote file system and access to that directory, the directory
    specified by {P_tmpdir} and an implementation-defined directory is
    denied after the process's effective user ID has been subject to
    the server's user ID mapping process, then tempnam() returns a
    NULL pointer.
    Test requirements: Test cases where the server both maps and does
    not map the process's effective user ID.
    For the XSH specification:
    If dir and {P_tmpdir} and an implementation defined directory are
    all names of inaccessible directories then NULL is returned.

    Test Information:
    deletion reason: could not create directory ./. - errno 17(EEXIST)

    ************************************************************************`

    Review Information

    Review Type TSMA Review
    Start Date null
    Completed null
    Status Complete
    Review Recommendation No Resolution Given
    Review Response
    The submitter claims these failures occur because the tests are
    suid-root, but he has not taken into account that the user ID will be
    mapped to the anonymous user ID by the server. Also, some of the
    failures are for parts of the tests which are done with a normal
    user ID.

    The statement in the release notes regarding alignment with XNFS3W
    is not relevant, as no changes were made to the tempnam() tests as
    part of that alignment. The tests pass on other NFSv2 implementations.

    Finally, there is nothing in the submitter's rationale to explain
    the EEXIST error reported in test 7.

    It is recommended that this request is refused.

    Review Type SA Review
    Start Date null
    Completed null
    Status Complete
    Review Resolution Rejected (REJ)
    Review Conclusion
    This request is refused.

    Problem Reporting System Options:

     

    Back   


Contact the Certification Authority