[libvirt] [PATCH 1/2] rpc: fix getsockopt for LOCAL_PEERCRED on Mac OS X

Ryota Ozaki ozaki.ryota at gmail.com
Mon Oct 7 13:37:07 UTC 2013


Hi Michal,

On Mon, Oct 7, 2013 at 5:33 PM, Michal Privoznik <mprivozn at redhat.com> wrote:
> On 05.10.2013 07:56, Ryota Ozaki wrote:
>> This fixes the following error:
>>   error : virGetUserEnt:703 : Failed to find user record for uid '32654'
>>
>> '32654' (it's random and varies) comes from getsockopt with
>> LOCAL_PEERCRED option. getsockopt returns w/o error but seems
>> to not set any value to the buffer for uid.
>>
>> For Mac OS X, LOCAL_PEERCRED has to be used with SOL_LOCAL level.
>> With SOL_LOCAL, getsockopt returns a correct uid.
>>
>> Note that SOL_LOCAL can be found in
>> /System/Library/Frameworks/Kernel.framework/Versions/A/Headers/sys/un.h.
>>
>> Signed-off-by: Ryota Ozaki <ozaki.ryota at gmail.com>
>> ---
>>  src/rpc/virnetsocket.c | 4 ++++
>>  1 file changed, 4 insertions(+)
>>
>> diff --git a/src/rpc/virnetsocket.c b/src/rpc/virnetsocket.c
>> index 152c5fc..a6ef07a 100644
>> --- a/src/rpc/virnetsocket.c
>> +++ b/src/rpc/virnetsocket.c
>> @@ -1159,7 +1159,11 @@ int virNetSocketGetUNIXIdentity(virNetSocketPtr sock,
>>      socklen_t cr_len = sizeof(cr);
>>      virObjectLock(sock);
>>
>> +#if defined(__APPLE__)
>> +    if (getsockopt(sock->fd, SOL_LOCAL, LOCAL_PEERCRED, &cr, &cr_len) < 0) {
>> +#else
>>      if (getsockopt(sock->fd, SOL_SOCKET, LOCAL_PEERCRED, &cr, &cr_len) < 0) {
>> +#endif
>>          virReportSystemError(errno, "%s",
>>                               _("Failed to get client socket identity"));
>>          virObjectUnlock(sock);
>>
>
> Indentation off. Fixed and pushed. You can use 'make syntax-check' to
> catch these problems. Although, you need cppi installed.

I did make syntax-check, however I'm sorry, I ignored warnings for cppi...

I've installed cppi via 'brew create' and confirmed the syntax problems.

Thanks,
  ozaki-r

>
> ACK
>
> Michal
>
> NB: Cole, I think this is yet another candidate for maint branches.




More information about the libvir-list mailing list