On 2025-04-10 15:13, Nelson H. F. Beebe wrote:
I made this change against the original test file:

        %  diff dfly-openat-bug.c dfly-openat-bug-3.c
        8c8
        <   int dirfd = open ("d/", O_SEARCH | O_DIRECTORY);
        ---
        >   int dirfd = open ("d/", O_RDONLY | O_DIRECTORY);
        11c11
        <   int fd = openat (dirfd, "f", O_EXCL | O_CREAT | O_WRONLY, 0660);
        ---


That diff is chopped off; what did line 11 get changed to?


Here is the test run:

        % ls -ldR d
        dr-xr-xr-x 1 beebe wheel 0 Apr 10 16:06 d

        % gcc dfly-openat-bug-3.c && ./a.out
        d/f: Permission denied

The final message now appears to be accurate, and expected due to the
directory permissions.

Yes, evidently we didn't fully reproduce the symptoms you reported, symptoms that I quoted in <https://bugs.gnu.org/77640#17>. The relevant line there is:

        openat(0x4,0x49f822,0xa01,0x180)                 ERR#17 'File exists'

0x180 == 0660 and I assume 0xa01 equals (O_EXCL | O_CREAT | O_WRONLY). If so, I don't understand why our attempt to reproduce the bug failed, unless it has something to do with a change to line 11 above.


I'm still unclear about why gzip would need (or want) to be able to
write into a no-write-access directory in the failing test.
Explanation?

The test is making sure that gzip outputs a reasonable diagnosic when asked to write into an unwriteable directory. Unfortunately this isn't happening on DragonflyBSD, evidently due to a kernel bug there.



Reply via email to