1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-12-24 17:51:17 +03:00

Handle too-small buffers in Linux getlogin_r.

This commit is contained in:
Ulrich Drepper
2010-05-05 09:44:50 -07:00
parent 3155f06621
commit 5ae958d741
3 changed files with 17 additions and 4 deletions

View File

@@ -81,13 +81,22 @@ __getlogin_r_loginuid (name, namesize)
if (tpwd == NULL)
goto fail;
strncpy (name, pwd.pw_name, namesize - 1);
name[namesize - 1] = '\0';
int result = 0;
size_t needed = strlen (pwd.pw_name) + 1;
if (needed > namesize)
{
__set_errno (ERANGE);
result = ERANGE;
goto out;
}
memcpy (name, pwd.pw_name, needed);
out:
if (use_malloc)
free (buf);
return 0;
return result;
}