[libvirt] [PATCH 1/2] Add virGetUserDirectoryByUID to retrieve users homedir based on UID.

Eric Blake eblake at redhat.com
Tue Jul 30 21:26:44 UTC 2013


On 07/30/2013 01:55 PM, dwalsh at redhat.com wrote:
> From: Dan Walsh <dwalsh at redhat.com>

Subject line was a little long; I trimmed it to:

util: add virGetUserDirectoryByUID

> 
> This function is needed for virt-login-shell.  Also modify virGirUserDirectory
> to use the new function, to simplify the code.
> ---
>  src/libvirt_private.syms | 1 +
>  src/util/virutil.c       | 9 +++++++--
>  src/util/virutil.h       | 1 +
>  3 files changed, 9 insertions(+), 2 deletions(-)

Failed to build on mingw; here's what I squashed in, then pushed:

diff --git i/src/util/virutil.c w/src/util/virutil.c
index 99812ca..aef63c7 100644
--- i/src/util/virutil.c
+++ w/src/util/virutil.c
@@ -647,6 +647,11 @@ cleanup:
     return result;
 }

+char *virGetUserDirectory(void)
+{
+    return virGetUserDirectoryByUID(geteuid());
+}
+
 #ifdef HAVE_GETPWUID_R
 /* Look up fields from the user database for the given user.  On
  * error, set errno, report the error, and return -1.  */
@@ -757,11 +762,6 @@ char *virGetUserDirectoryByUID(uid_t uid)
     return ret;
 }

-char *virGetUserDirectory(void)
-{
-    return virGetUserDirectoryByUID(geteuid());
-}
-
 static char *virGetXDGDirectory(const char *xdgenvname, const char
*xdgdefdir)
 {
     const char *path = getenv(xdgenvname);
@@ -1097,8 +1097,11 @@ virGetWin32DirectoryRoot(char **path)


 char *
-virGetUserDirectory(void)
+virGetUserDirectoryByUID(uid_t uid ATTRIBUTE_UNUSED)
 {
+    /* Since Windows lacks setuid, and since we already fake
+     * geteuid(), we can safely assume that this is only called when
+     * querying about the current user */
     const char *dir;
     char *ret;

@@ -1182,7 +1185,7 @@ virGetUserRuntimeDirectory(void)

 # else /* !HAVE_GETPWUID_R && !WIN32 */
 char *
-virGetUserDirectory(void)
+virGetUserDirectoryByUID(uid_t uid ATTRIBUTE_UNUSED)
 {
     virReportError(VIR_ERR_INTERNAL_ERROR,
                    "%s", _("virGetUserDirectory is not available"));


-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 621 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20130730/feeb894e/attachment-0001.sig>


More information about the libvir-list mailing list