[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: fdopendir: Fix fd leak and test failure on native Windows
|
From: |
KO Myung-Hun |
|
Subject: |
Re: fdopendir: Fix fd leak and test failure on native Windows |
|
Date: |
Mon, 15 May 2023 00:14:53 +0900 |
|
User-agent: |
Mozilla/5.0 (OS/2; Warp 4.5; rv:10.0.6esrpre) Gecko/20120715 Firefox/10.0.6esrpre SeaMonkey/2.7.2 |
Hi/2.
Bruno Haible wrote:
> KO Myung-Hun wrote:
>>> dirfd is specified at
>>> https://pubs.opengroup.org/onlinepubs/9699919799/functions/dirfd.html
>>> Which says that if "The dirp argument does not refer to a valid directory
>>> stream"
>>> the function may fail with error EINVAL. It may alternatively simply crash
>>> ("the behavior is undefined").
>>
>> Then, gnulib decided to crash instead of returning -1 with setting errno
>> to EINAL if dir_p has the garbage value which is not returned by opendir() ?
>
> Correct.
>
> If a function that takes a pointer as argument wants to reject all invalid
> values reliably, without crashing, the only possible implementation is one
> that keeps a list of the valid values. This uses O(N) of space and — unless
> hashing or a binary tree is used — O(N) of time per operation. Therefore
> in these cases POSIX does not require this sort of behaviour, but makes
> it optional:
> https://pubs.opengroup.org/onlinepubs/9699919799/functions/dirfd.html
> https://pubs.opengroup.org/onlinepubs/9699919799/functions/closedir.html
> https://pubs.opengroup.org/onlinepubs/9699919799/functions/dbm_close.html
> https://pubs.opengroup.org/onlinepubs/9699919799/functions/iconv_close.html
> https://pubs.opengroup.org/onlinepubs/9699919799/functions/pclose.html
> https://pubs.opengroup.org/onlinepubs/9699919799/functions/sem_close.html
>
> It is only mandatory here:
> https://pubs.opengroup.org/onlinepubs/9699919799/functions/dlclose.html
>
> Gnulib's goal is that correct programs that use POSIX functions run fine
> also on native Windows, kLIBC, etc. It is not a goal to make the Gnulib
> replacement functions be "safer" in the sense that they will detect
> programming problems better than glibc does. We assume that the application
> development happens on glibc systems and that the debugging facilities
> (valgrind, ltrace, strace, etc.) there are sufficient; then the application
> will not have such logic mistakes.
>
Ok. I've understood Gnulib's goal. Thanks for your explanation.
I'll try to modify kLIBC codes.
--
KO Myung-Hun
Korean OS/2 User Community : https://www.os2.kr/