|
Home About Us A-Z Index Search * Contact Us Register Login Press ShopThe Open Brand -- Problem Reporting and Interpretations System |
Problem Report 0426 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 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 - EACCESReview 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:
- View Report 0426
- List All PRs
- Search Reports
- Email the System Administrator
- View the The Open Brand Interpretations Database User Manual
Contact the Certification Authority