getpw.3: Function could return -1 and set errno to zero.
PATCH 1/1 getpw.3: Function could return -1 and set errno to zero.
All of the BSD interfaces, including glibc's own implementation of getpw return -1 and set errno to 0 to indicate that there was no user corresponding to that uid.
I have never under any condition seen an NSS backend return ENOENT via the set of APIs that getpw uses internally in glibc.
Therefore I would suggest the manual page be expanded to include 0 in the list of valid errno values that indicate no corresponding user. I reorganize the list of errors to have the non-error at the top, as is done with getgrnam.3 and getpwnam.3 which have similar behaviour in the non-error case.
Patch against master.
man3/getpw.3 +4 -4
@@ -77,14 +77,14 @@ function returns 0 on success; on error, it returns \-1, and is set to indicate the error. .SH ERRORS .TP +.BR 0 " or " ENOENT +No user corresponding to +.IR uid . +.TP .B EINVAL .I buf is NULL. .TP -.B 0 or ENOENT -No user corresponding to -.IR uid . -.TP .B ENOMEM Insufficient memory to allocate .I passwd
---
Cheers,
Carlos.
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 29 lines · Carlos O'Donell
All of the BSD interfaces, including glibc's own implementation of getpw return -1 and set errno to 0 to indicate that there was no user corresponding to that uid.
I have never under any condition seen an NSS backend return ENOENT via the set of APIs that getpw uses internally in glibc.
Therefore I would suggest the manual page be expanded to include 0 in the list of valid errno values that indicate no corresponding user. I reorganize the list of errors to have the non-error at the top, as is done with getgrnam.3 and getpwnam.3 which have similar behaviour in the non-error case.
Patch against master.
man3/getpw.3 +4
-0@@ -77,14 +77,14 @@ function returns 0 on success; on error, it returns \-1, and is set to indicate the error. .SH ERRORS .TP +.BR 0 " or " ENOENT +No user corresponding to +.IR uid . +.TP .B EINVAL
man3/getpw.3 function returns 0 on success; on error, it returns \-1, and · line 90
Quoted 10 lines
man3/getpw.3 +0
-4.I buf is NULL. .TP -.B 0 or ENOENT -No user corresponding to -.IR uid . -.TP .B ENOMEM Insufficient memory to allocate .I passwd
Hi Carlos,
This patch was broken. (I think you must have prepared a preceding patch that you did not send.
I take your point, but I think a little more could be said. I instead applied the patch below. Okay?
Thanks,
Michael
man3/getpw.3 +14 -4
@@ -75,16 +75,26 @@ The function returns 0 on success; on error, it returns \-1, and .I errno is set to indicate the error. + +If +.I uid +is not found in the password database, +.BR getpw () +returns 0, sets +.I errno +to 0, and leaves +.I buf +unchanged. .SH ERRORS .TP +.BR 0 " or " ENOENT +No user corresponding to +.IR uid . +.TP .B EINVAL .I buf is NULL. .TP -.B ENOENT -No user corresponding to -.IR uid . -.TP .B ENOMEM Insufficient memory to allocate .I passwd
Signature · 7 lines
Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/ -- To unsubscribe from this list: send the line "unsubscribe linux-man" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 2 lines · Michael Kerrisk (man-pages)
This patch was broken. (I think you must have prepared a preceding patch that you did not send.
Sorry for that, I had a busy tree and was trying to push out all the temporary patches I had pending.
Quoted 2 lines
I take your point, but I think a little more could be said. I instead applied the patch below. Okay?
Yes, modulo what I expect is a typo. Comments inline.
Quoted 9 lines
Thanks,
Michael
man3/getpw.3 +0
-0
man3/getpw.3 The · line 83
Quoted 9 lines
man3/getpw.3 +6
-0@@ -75,16 +75,26 @@ The function returns 0 on success; on error, it returns \-1, and .I errno is set to indicate the error. + +If +.I uid +is not found in the password database, +.BR getpw () +returns 0, sets
Should be "returns -1" not "returns 0".
Quoted 12 lines
man3/getpw.3 +8
-0+.I errno +to 0, and leaves +.I buf +unchanged. .SH ERRORS .TP +.BR 0 " or " ENOENT +No user corresponding to +.IR uid . +.TP .B EINVAL
man3/getpw.3 The · line 100
Quoted 10 lines
man3/getpw.3 +0
-4.I buf is NULL. .TP -.B ENOENT -No user corresponding to -.IR uid . -.TP .B ENOMEM Insufficient memory to allocate .I passwd
OK with that change.
Cheers,
Carlos.
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 1 line · Carlos O'Donell
On 01/16/2015 01:38 AM, Michael Kerrisk (man-pages) wrote:
[...]
Quoted 7 lines
man3/getpw.3 The · line 83
Quoted 5 lines
man3/getpw.3 +5
-0+If +.I uid +is not found in the password database, +.BR getpw () +returns 0, setsShould be "returns -1" not "returns 0".
D'oh! Thanks for catching that typo, Carlos. Fixed now.
Cheers,
Michael
Signature · 7 lines
Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/ -- To unsubscribe from this list: send the line "unsubscribe linux-man" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html