Skip to content

Commit

Permalink
Handle too-small buffers in Linux getlogin_r.
Browse files Browse the repository at this point in the history
  • Loading branch information
Ulrich Drepper committed May 5, 2010
1 parent 3155f06 commit 5ae958d
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 5 deletions.
4 changes: 4 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
2010-05-05 Ulrich Drepper <drepper@redhat.com>

[BZ #11571]
* sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): Handle
too small buffers according to the standard.

* sysdeps/unix/sysv/linux/kernel-features.h: Alpha doesn't have to be
handled here anymore.
Patch mostly by Matt Turner <mattst88@gmail.com>.
Expand Down
2 changes: 1 addition & 1 deletion NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Version 2.12
11185, 11186, 11187, 11188, 11189, 11190, 11191, 11192, 11193, 11194,
11200, 11230, 11235, 11242, 11254, 11258, 11271, 11272, 11276, 11279,
11287, 11292, 11319, 11332, 11333, 11387, 11389, 11390, 11394, 11397,
11410, 11438, 11449, 11470, 11471, 11520, 11537, 11538
11410, 11438, 11449, 11470, 11471, 11520, 11537, 11538, 11571

* New interfaces: pthread_getname_np, pthread_setname_np

Expand Down
17 changes: 13 additions & 4 deletions sysdeps/unix/sysv/linux/getlogin_r.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}


Expand Down

0 comments on commit 5ae958d

Please sign in to comment.