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

The Open Brand -- Problem Reporting and Interpretations System


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


Report 1677 Actions


    Problem Report Number 1677
    Submitter's Classification Test Suite problem
    State Resolved
    Resolution Rejected (REJ)
    Problem Resolution ID REJ.X.0481
    Raised 2002-01-29 08:00
    Updated 2003-03-13 08:00
    Published null
    Product Standard Internationalised System Calls and Libraries Extended V2 (UNIX 98)
    Certification Program The Open Brand certification program
    Test Suite VSU version 5.1.2
    Test Identification CAPI.os/files/mknod 27
    Problem Summary PG4U.00184 The tests fail because of an issue related to tempnam() and the permissions on the NOSPC_DEV; a work-around is to change the permissions.
    Problem Text
    The problem with the assertion above is the check in fill_me_up:

    if (strcmp(tmpdir, path))
    {
    tet_infoline("ERROR: tempnam() did not use the mounted filesystem");
    sprintf(ebuf, " Requested directory: %s, used directory: %s", path, tmpdir);
    tet_infoline(ebuf);
    tet_result(TET_UNRESOLVED);
    return (-1);
    }

    The definition of tempnam() says:

    "The tempnam() function allows the user to control the choice of a directory.
    The DIR argument points to the name of the directory in which the file is to
    be created. If dir is a null pointer or points to a string which is not the
    name for an appropriate directory, the path prefix defined as {P_tmpdir} in the
    <stdio.h> header is used. If that directort is not accessible, an
    implementation-dependant directory may be used."

    The standard never defines "appropriate directory". Our implementation has
    specified that a directory is not appropriate if access() indicates the calling
    program does not have permissions to access the directory specified.

    The definition of access() says:

    "The access() function checks the file named by pathname pointed to by the
    PATH argument for accessibility to the bit pattern contained in AMODE,
    using the real user ID inplace of the effective user ID and the real group
    ID in place of the effective group ID."

    For the assertions listed above, they are setuid but since the test is
    being run by vsx0, access() indicates the program cannot access DIR.


    Test Output
    ************************************************************************
    /tset/CAPI.os/files/mknod/T.mknod 27 Unresolved

    Test Description:
    Base Required Deviance
    ENOSPC in errno and return -1 on a call to int mknod(const char *path,
    mode_t mode, dev_t dev) when the directory which would contain the new
    file specified by path cannot be extended.

    Test Information:
    PREP: Mount file-system read-write on ../tmp/mpoint
    PREP: Fill up the file system
    PREP: Make a directory
    PREP: Filling up a single large file till the
    filesystem is full
    PREP: Fill up the directory entry spaces and filesystem
    fragments
    ERROR: tempnam() did not use the mounted filesystem
    Requested directory: ../tmp/mpoint/enospc_dir, used directory:
    /var/tmp

    ************************************************************************

    ************************************************************************
    /tset/CAPI.os/files/symlink/T.symlink 17 Unresolved

    Test Description:
    Base Required Deviance
    ENOSPC in errno and return -1 on a call to int symlink(const char
    *path1, const char *path2) when the directory in which the entry for
    the new symbolic link is being placed cannot be extended because no
    space is left on the file system containing the directory.

    Test Information:
    PREP: Create a regular file.
    PREP: Mount file-system read-write on ../tmp/mpoint
    PREP: Fill up the file system
    PREP: Make a directory
    PREP: Filling up a single large file till the
    filesystem is full
    PREP: Fill up the directory entry spaces and filesystem
    fragments
    ERROR: tempnam() did not use the mounted filesystem
    Requested directory: ../tmp/mpoint/enospc_dir, used directory:
    /var/tmp

    ************************************************************************

    ************************************************************************
    /tset/CAPI.os/files/symlink/T.symlink 18 Unresolved

    Test Description:
    Base Required Deviance
    ENOSPC in errno and return -1 on a call to int symlink(const char
    *path1, const char *path2) when the new symbolic link cannot be
    created because no space is left on the file system to contain the
    link.

    Test Information:
    PREP: Create a regular file.
    PREP: Mount file-system read-write on ../tmp/mpoint
    PREP: Fill up the file system
    PREP: Make a directory
    PREP: Filling up a single large file till the
    filesystem is full
    PREP: Fill up the directory entry spaces and filesystem
    fragments
    ERROR: tempnam() did not use the mounted filesystem
    Requested directory: ../tmp/mpoint/enospc_dir, used directory:
    /var/tmp

    ************************************************************************

    Review Information

    Review Type TSMA Review
    Start Date null
    Completed null
    Status Complete
    Review Recommendation No Resolution Given
    Review Response
    The use of tempnam() in these tests is inappropriate, and they should
    be changed to avoid it.

    However, there is a simple work-around which will prevent the test
    failures occurring on this system. If the permissions on the NOSPC_DEV
    file system are changed so that user vsx0 has the relevant access to
    the enospc_dir directory, then tempnam() will use it instead of P_tmpdir.
    Since enospc_dir is created with 777 permissions, it must be the
    permissions on the root directory of the NOSPC_DEV file system that
    are preventing access by vsx0. Mounting the file system and executing
    "chmod a+rx" for the mount point (then unmounting) should cure the
    problem.

    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