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

The Open Brand -- Problem Reporting and Interpretations System


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


Report 0426 Actions


    Problem Report Number 0426
    Submitter's Classification Test Suite problem
    State Resolved
    Resolution Rejected (REJ)
    Problem Resolution ID REJ.X.0045
    Raised 1993-11-17 08:00
    Updated 2003-03-13 08:00
    Published null
    Product Standard Internationalised System Calls and Libraries (XPG4)
    Certification Program The Open Brand certification program
    Test Suite VSX4 version 4.3.2
    Test Identification POSIX.os/dataform/tar 5
    Problem Summary PG4R.045 In the source file tset/POSIX.os/dataform/tar/tar2.c the following is found: /* Remove the file */ (void) rmdir(p2); err = errno; /* Check it has really gone */ if(stat(p2, &stbuf) != SYSERROR || err ...
    Problem Text

    In the source file tset/POSIX.os/dataform/tar/tar2.c the following is
    found:

    /* Remove the file */
    (void) rmdir(p2);
    err = errno;

    /* Check it has really gone */
    if(stat(p2, &stbuf) != SYSERROR || err != ENOENT)
    {
    if(!test_fail++)
    xx_rpt(DELETION);
    in_rpt("rmdir() did not remove directory %s", p2);
    in_rpt("errno = %d - %s", err, errname(err));
    break;
    }
    else
    PATH_TRACE;

    Several problems exist with this code. First note that errno is not set to
    zero prior to the rmdir() call. Thus if the rmdir() is successful the err
    will be set to the prior errno. In this case errno is set to EACCESS(13) in
    the routine init_head(). Note, there appears to be a lack of return value/errno
    checking in init_head(). The path under test A/D1/ appears to be a special
    case and the directory is created during the call to init_pathres() earlier
    in the testcase. The other directories used in this testcase are not created.
    Thus when the rmdir() is executed err is set to ENOENT (2) and they pass the
    stat() check. When rmdir(A/D1) is executed, errno does not change and err is
    set to EACCESS (13). The directory is removed but the stat() check fails and
    the testcase reports unresolved.

    Also the line
    if(stat(p2, &stbuf) != SYSERROR || err != ENOENT)
    is incorrect. Since directory A/D1 must be removed, err will be zero
    (if the above is corrected) this check will fail when the rmdir() has succeed.
    Inserting a errno=0 statement before the rmdir() statement demonstrates this.
    Test Output
    /tset/POSIX.os/dataform/tar/T.tar 5 Unresolved

    Test Description:
    The extended tar archive format utility supports filename resolution.
    Posix Ref: Component TAR Assertion 10.1.1-09(A)

    Test Information:
    rmdir() did not remove directory A/D1
    errno = 13 - EACCES

    Review Information

    Review Type TSMA Review
    Start Date null
    Completed null
    Status Complete
    Review Recommendation No Resolution Given
    Review Response
    This is accepted as test suite fault. The request mentions that the test
    suite was executed in XPG3 mode and the request should be resubmitted as
    an XPG3 waiver request.

    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