[Libvir] 7/22 no uid_t / getuid

Jim Meyering jim at meyering.net
Fri Dec 7 11:42:35 UTC 2007


"Richard W.M. Jones" <rjones at redhat.com> wrote:
> There is no uid_t or getuid in MinGW.
>
> I'm not really sure that forcing connections readonly if the user is
> non-root is a useful thing to be doing anyway, so perhaps this code is
> better off just being deleted?

For the missing uid_t, you could add this to configure.in
AC_CHECK_TYPE(mode_t, int)
then no need for ifndef around the decl of "uid".

With this function (and a test for getuid in configure.in),
(or maybe that should be "return 0"?)

#ifndef HAVE_GETUID
static int getuid() { return 1; }
#endif /* __MINGW32__ */

you could avoid the remaining ifdefs.

> --
> Emerging Technologies, Red Hat - http://et.redhat.com/~rjones/
> Registered Address: Red Hat UK Ltd, Amberley Place, 107-111 Peascod
> Rich.
>
> Street, Windsor, Berkshire, SL4 1TE, United Kingdom.  Registered in
> England and Wales under Company Registration No. 03798903
> Index: src/virsh.c
> ===================================================================
> RCS file: /data/cvs/libvirt/src/virsh.c,v
> retrieving revision 1.118
> diff -u -r1.118 virsh.c
> --- src/virsh.c	6 Dec 2007 16:36:21 -0000	1.118
> +++ src/virsh.c	7 Dec 2007 10:44:05 -0000
> @@ -202,7 +202,9 @@
>      virConnectPtr conn;         /* connection to hypervisor (MAY BE NULL) */
>      vshCmd *cmd;                /* the current command */
>      char *cmdstr;               /* string with command */
> +#ifndef __MINGW32__
>      uid_t uid;                  /* process owner */
> +#endif /* __MINGW32__ */
>      int imode;                  /* interactive mode? */
>      int quiet;                  /* quiet mode */
>      int debug;                  /* print debug messages? */
> @@ -4508,17 +4523,21 @@
>      if (ctl->conn)
>          return FALSE;
>
> +#ifndef __MINGW32__
>      ctl->uid = getuid();
> +#endif
>
>      vshOpenLogFile(ctl);
>
>      /* set up the library error handler */
>      virSetErrorFunc(NULL, virshErrorHandler);
>
> +#ifndef __MINGW32__
>      /* Force a non-root, Xen connection to readonly */
>      if ((ctl->name == NULL ||
>           !strcasecmp(ctl->name, "xen")) && ctl->uid != 0)
>           ctl->readonly = 1;
> +#endif




More information about the libvir-list mailing list