getlogin_r: fix the type of len
getlogin_r is specified by POSIX to to take a size_t len, not int. Fix our version to do the same, bump the symbol version due to ABI change and provide compat. This was reported to break compilation of Ruby 2.8. Some discussion about the necessity of the ABI compat did take place in the review. While many 64-bit platforms would likely be passing it in a 64-bit register and zero-extended and thus, not notice ABI breakage, some do sign-extend (e.g. mips). PR: 247102 Submitted by: Bertram Scharpf <software@bertram-scharpf.de> (original) Submitted by: cem (ABI compat) MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D26335
This commit is contained in:
parent
d455cd5ac3
commit
69112cca60
@ -399,7 +399,7 @@ int ftruncate(int, off_t);
|
||||
#endif
|
||||
|
||||
#if __POSIX_VISIBLE >= 199506
|
||||
int getlogin_r(char *, int);
|
||||
int getlogin_r(char *, size_t);
|
||||
#endif
|
||||
|
||||
/* 1003.1-2001 */
|
||||
|
@ -156,7 +156,6 @@ FBSD_1.0 {
|
||||
gethostname;
|
||||
getloadavg;
|
||||
getlogin;
|
||||
getlogin_r;
|
||||
setnetgrent;
|
||||
getnetgrent;
|
||||
endnetgrent;
|
||||
@ -422,6 +421,7 @@ FBSD_1.5 {
|
||||
};
|
||||
|
||||
FBSD_1.6 {
|
||||
getlogin_r;
|
||||
memalign;
|
||||
scandir_b;
|
||||
sigandset;
|
||||
|
@ -58,7 +58,7 @@ getlogin(void)
|
||||
}
|
||||
|
||||
int
|
||||
getlogin_r(char *logname, int namelen)
|
||||
getlogin_r(char *logname, size_t namelen)
|
||||
{
|
||||
char tmpname[MAXLOGNAME];
|
||||
int len;
|
||||
@ -75,3 +75,13 @@ getlogin_r(char *logname, int namelen)
|
||||
strlcpy(logname, tmpname, len);
|
||||
return (0);
|
||||
}
|
||||
|
||||
/* FreeBSD 12 and earlier compat. */
|
||||
int
|
||||
__getlogin_r_fbsd12(char *logname, int namelen)
|
||||
{
|
||||
if (namelen < 1)
|
||||
return (ERANGE);
|
||||
return (getlogin_r(logname, namelen));
|
||||
}
|
||||
__sym_compat(getlogin_r, __getlogin_r_fbsd12, FBSD_1.0);
|
||||
|
@ -28,7 +28,7 @@
|
||||
.\" @(#)getlogin.2 8.1 (Berkeley) 6/9/93
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd June 9, 1993
|
||||
.Dd September 9, 2020
|
||||
.Dt GETLOGIN 2
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -44,7 +44,7 @@
|
||||
.Fn getlogin void
|
||||
.In sys/param.h
|
||||
.Ft int
|
||||
.Fn getlogin_r "char *name" "int len"
|
||||
.Fn getlogin_r "char *name" "size_t len"
|
||||
.Ft int
|
||||
.Fn setlogin "const char *name"
|
||||
.Sh DESCRIPTION
|
||||
|
Loading…
Reference in New Issue
Block a user