getspnam.3: ATTRIBUTES: Note functions that are/aren't thread-safe

After research, We think
* getspnam(),
* getspent(),
* setspent(),
* endspent(),
* getspent_r(),
* fgetspent(),
* sgetspent(),
are not thread-safe. And
* putspent(),
* getspnam_r(),
* sgetspent_r(),
* lckpwdf(),
* ulckpwdf(),
* fgetspent_r(),
are thread-safe. But, there are not
markings of them in glibc document.

Signed-off-by: Zeng Linggang <zenglg.jy@cn.fujitsu.com>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
This commit is contained in:
Zeng Linggang 2015-08-24 18:19:53 +08:00 committed by Michael Kerrisk
parent 1ec27c36ff
commit 557d7d9682
1 changed files with 60 additions and 0 deletions

View File

@ -246,6 +246,66 @@ The include file
defines the constant
.B _PATH_SHADOW
to the pathname of the shadow password file.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.TS
allbox;
lbw25 lb lbw30
l l l.
Interface Attribute Value
T{
.BR getspnam ()
T} Thread safety T{
MT-Unsafe race:getspnam locale
T}
T{
.BR getspent ()
T} Thread safety T{
MT-Unsafe race:getspent
.br
race:spentbuf locale
T}
T{
.BR setspent (),
.BR endspent (),
.br
.BR getspent_r ()
T} Thread safety T{
MT-Unsafe race:getspent locale
T}
T{
.BR fgetspent ()
T} Thread safety MT-Unsafe race:fgetspent
T{
.BR sgetspent ()
T} Thread safety MT-Unsafe race:sgetspent
T{
.BR putspent (),
.BR getspnam_r (),
.br
.BR sgetspent_r ()
T} Thread safety MT-Safe locale
T{
.BR lckpwdf (),
.BR ulckpwdf (),
.br
.BR fgetspent_r ()
T} Thread safety MT-Safe
.TE
In the above table,
.I getspent
in
.I race:getspent
signifies that if any of the functions
.BR setspent (3),
.BR getspent (3),
.BR getspent_r (3),
or
.BR endspent (3)
are used in parallel in different threads of a program,
then data races could occur.
.SH CONFORMING TO
The shadow password database and its associated API are
not specified in POSIX.1.