1 2010-05-05 Ulrich Drepper <drepper@redhat.com>
4 * sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): Handle
5 too small buffers according to the standard.
7 Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getlogin_r.c
8 ===================================================================
9 --- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/getlogin_r.c
10 +++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getlogin_r.c
11 @@ -81,13 +81,22 @@ __getlogin_r_loginuid (name, namesize)
15 - strncpy (name, pwd.pw_name, namesize - 1);
16 - name[namesize - 1] = '\0';
18 + size_t needed = strlen (pwd.pw_name) + 1;
19 + if (needed > namesize)
21 + __set_errno (ERANGE);
26 + memcpy (name, pwd.pw_name, needed);