On Wed, 30 Sep 2015, Ian Campbell wrote:
> On Tue, 2015-09-29 at 18:07 +0100, Ian Jackson wrote:
> > Stefano Stabellini writes ("Re: [PATCH v7] run QEMU as non-root"):
> > > On Fri, 7 Aug 2015, Wei Liu wrote:
> > > > Please use for / while to loop.
> > >
> > > The goto retry loop is a very common patter for error handling, but I
> > > can turn it into a loop if you are keen on it.
> >
> > I'm afraid I agree with Wei here.
> >
> > > > Also you might want to save and restore errno.
> > >
> > > Across the getpwnam_r call? Or across the loop? Or across the function
> > > libxl__dm_runas_helper?
> >
> > I don't understand either. Also I don't understand why you set errno
> > to 0.
>
> getpwnam(7) says:
>
> RETURN VALUE
> The getpwnam() and getpwuid() functions return a pointer to a
> passwd structure, or NULL if the matching entry is not found
> or an error occurs. If an error occurs, errno is set appro‐
> priately. If one wants to check errno after the call, it
> should be set to zero before the call.
>
> But this code is using the _r variants, on which the manpage later says:
>
> On success, getpwnam_r() and getpwuid_r() return zero, and
> set *result to pwd. If no matching password record was
> found, these functions return 0 and store NULL in *result.
> In case of error, an error number is returned, and NULL is
> stored in *result.
>
> So I guess the errno is either a leftover from not using _r in an earlier
> version or from applying the first para above to the wrong functions.
Yes, I think it was probably a leftover from a previous version. I'll
remove it.
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel