Commit Graph
18 Commits
Author SHA1 Message Date
Andrew Schwartzmeyer 5ed81a0a41 Return char* for GetUserName
The UTF-8 char* is marshaled to a UTF-16 string automatically. It must
be allocated on the heap as the CLR will free the returned memory.

This removes entire classes of possible errors, greatly reducing the
code complexity and number of tests.
2015-10-24 22:17:44 -07:00
Andrew Schwartzmeyer 020a768c31 Use getpwuid(geteuid()) instead of getlogin()
This removes the dependency on a TTY and now does what is expected: gets
the (possibly impersonated) username of the current process/thread.

Implementation and tests updated, still uses reentrant versions where possible.
2015-09-23 15:57:23 -07:00
Andrew Schwartzmeyer d298302e8c Use libicu properly in tests 2015-08-13 21:34:59 -07:00
Andrew Schwartzmeyer fc8f5d18c4 Use 0 instead of '\0'
To be consistent with tests
2015-08-13 20:32:30 -07:00
Andrew Schwartzmeyer 9a42b894f2 Convert to Allman style with 4-space indentation 2015-08-07 18:43:58 -07:00
Andrew Schwartzmeyer f8e9dfde8c Fix style issues
- Use Doxygen style comments (with better comments)
- Use `type* ident` instead of `type *ident`
- Start { on new lines
- Use TRUE/FALSE from PAL.H
2015-08-07 12:03:31 -07:00
Andrew Schwartzmeyer b379fb4a6b Rename to GetUserNameW since it is Unicode 2015-08-06 16:28:29 -07:00
Andrew Schwartzmeyer 447896aede Use WCHAR sizes instead of CHAR sizes
Such that lpnSize is the length (number of UTF-16 characters, including
null) of the username. Must be multiplied by sizeof(char16_t) for bytes.
2015-08-04 18:31:54 -07:00
Andrew Schwartzmeyer e64c8961c9 Update GetUserName tests
Note that these fail when run in a Docker container because a) the
current container's locale is not completely set, and b) getlogin()
returns null with ENOENT since /var/run/utmp is being mapped to the
host, and thus denied access from within the container.

The container needs the locale set and its own /run/utmp, see
https://lists.linuxcontainers.org/pipermail/lxc-users/2011-July/002374.html
2015-08-04 14:16:57 -07:00
Andrew Schwartzmeyer 0c9fb0d01b Rename userName in test to expectedUsername
To clarify that it is for comparison; not the result of GetUserName.
2015-08-03 13:00:34 -07:00
Andrew Schwartzmeyer 9426e9c455 Use LOGIN_NAME_MAX instead of L_cuserid
Since L_cuserid is only for cuserid, not getlogin_r

Unit test for L_cuserid removed because the macro may not be available
on all platforms.
2015-08-03 13:00:34 -07:00
Andrew Schwartzmeyer cbee353d0d Add more unit test coverage for GetUserName 2015-08-03 13:00:34 -07:00
Andrew Schwartzmeyer 0f07a65f50 Use test fixture in GetUserName unit tests 2015-08-03 13:00:34 -07:00
Andrew Schwartzmeyer e8cb7e24fe Use L_cuserid instead of 64 and given lpnSize 2015-08-03 13:00:34 -07:00
Andrew Schwartzmeyer 3ab3408378 Factor out using directives 2015-08-03 13:00:34 -07:00
Andrew Schwartzmeyer 41a00d9279 Clarify lpBuffer layout in GetUserName unit test 2015-08-03 13:00:34 -07:00
Andrew Schwartzmeyer ff0b43015b Test UTF-16 output of GetUserName 2015-08-03 13:00:34 -07:00
Andrew Schwartzmeyer f8eedc7210 Add unit test for GetUserName 2015-08-03 12:58:59 -07:00