bug-tar
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug-tar] [GNU tar 1.26] testsuite: 39 failed


From: Jez Wain
Subject: Re: [Bug-tar] [GNU tar 1.26] testsuite: 39 failed
Date: Thu, 26 Jul 2012 12:33:53 +0200

Paul,

You may have found the culprit.  I'd compiled tar on an earlier version of AIX without any problems.  

On receiving your mail I checked this older system and found that O_NOFOLLOW is not defined in any header.  In fcntl.h there is only AT_SYMLINK_NOFOLLOW.

On the new server, which produced the erroneous result,  fcntl.h defines both O_NOFOLLOW and AT_SYMLINK_NOFOLLOW

I added the following pre compiler code at the head of extract.c and ran: make extract.o

#ifdef _XOPEN_SOURCE
#warning Got _XOPEN_SOURCE
#if _XOPEN_SOURCE >= 700
#warning _XOPEN_SOURCE >= 700
#endif  // _OPEN_SOURCE >= 700
#endif  // _XOPEN_SOURCE


#ifdef O_NOFOLLOW
#warning Got  O_NOFOLLOW
#else
#warning No O_NOFOLLOW
#endif


#ifdef AT_SYMLINK_NOFOLLOW
#warning Got AT_SYMLINK_NOFOLLOW
#endif 




bash-4.2# make extract.o
  CC     extract.o
"extract.c", line 31.2: 1506-948 (W) #warning Got _XOPEN_SOURCE
"extract.c", line 33.2: 1506-948 (W) #warning _XOPEN_SOURCE >= 700
"extract.c", line 41.2: 1506-948 (W) #warning Got  O_NOFOLLOW
"extract.c", line 48.2: 1506-948 (W) #warning Got AT_SYMLINK_NOFOLLOW
bash-4.2# 

(I added the XOPEN_SOURCE tests as it is a condition for the definition of O_NOFOLLOW in fcntl.h)

This explains why the code you flagged is not called as the test is for (! O_NOFOLLOW) but O_NOFOLLOW is defined


Jez

On 26 Jul 2012, at 00:08, Paul Eggert wrote:

On 07/25/2012 07:50 AM, Jez Wain wrote:
here's the truss…

Thanks.  It appears that the code commented
"If O_NOFOLLOW is needed but does not work, check for a symlink
separately." in extract.c is not effective, that is, fstatat is
not being invoked there.  Can you see why this is so?
Perhaps you can debug tar with GDB.  Or perhaps you can
send the output of the command

grep -r O_NOFOLLOW /usr/include

as one possibility is that O_NOFOLLOW is defined to
some nonzero value on AIX but does not in fact work.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]