[Bug 247102] getlogin_r(): Sort of a typo: int is actually a size_t

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Tue Jun 9 16:56:16 UTC 2020


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=247102

--- Comment #3 from Conrad Meyer <cem at freebsd.org> ---
Something like this:

--- a/lib/libc/gen/Symbol.map
+++ b/lib/libc/gen/Symbol.map
@@ -156,7 +156,6 @@ FBSD_1.0 {
        gethostname;
        getloadavg;
        getlogin;
-       getlogin_r;
        setnetgrent;
        getnetgrent;
        endnetgrent;
@@ -423,6 +422,7 @@ FBSD_1.5 {
 };

 FBSD_1.6 {
+       getlogin_r;
        memalign;
        sigandset;
        sigisemptyset;
--- a/lib/libc/gen/getlogin.c
+++ b/lib/libc/gen/getlogin.c
@@ -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);

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-standards mailing list