[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH][Take 3] VNC authentification



Masami Watanabe wrote:
> Hi all,
>
> My understanding of main_loop of vl.c was insufficient. 
> I have improved the point to have set the handler doubly.
> The protocol of protocol 3.3 and (UltraVNC's ?)3.4 did not actually
> need the response of the authentification type from the client.
> Therefore, protocol_authtype operated without being called.
>   

Yeah, I noticed that myself. That why your code was working. Your
authtype (which would have been right for 3.7+) was not being invoked
which happened to make it work for 3.3 :-)

> I will post the take 4 patch after this.
>
> The patch has limited  RFB protocol to 3.3 and 3.4.
> I also think that it should support 3.8 without being support 3.3 in
> the future.
>   

There is no official RFB 3.4.

The only documented protocols are 3.3, 3.7, and 3.8. Leaving no
authentication is definitely important. I can live with not having 3.8
support right away but I think it's key to allow for no authentication.

Regards,

Anthony Liguori

> However, Leaving like non authetification is not good.
> You will think the patch to be provisional action till then.
>
> Another.
> ill the RFB protocol still keep evolving in the future?
>
>
> Best regards,
> Watanabe
>
>
> On Tue, 03 Oct 2006 13:49:37 -0500, Anthony Liguori wrote:
>   
>> Daniel P. Berrange wrote:
>>     
>>> On Tue, Oct 03, 2006 at 12:56:31PM -0500, Anthony Liguori wrote:
>>>   
>>>       
>>>> Masami Watanabe wrote:
>>>>     
>>>>         
>>>>> +static int vnc_auth(VncState *vs)
>>>>> +{
>>>>> +    extern char vncpasswd[64];
>>>>> +    extern unsigned char challenge[AUTHCHALLENGESIZE];
>>>>> +
>>>>> +    if (*vncpasswd == '\0') {
>>>>> + /* AuthType is None */
>>>>> + vnc_write_u32(vs, 1);
>>>>> + vnc_flush(vs);
>>>>> + vnc_read_when(vs, protocol_client_init, 1);
>>>>> +    } else {
>>>>> + /* AuthType is VncAuth */
>>>>> + vnc_write_u32(vs, 2);
>>>>> + vnc_flush(vs);
>>>>> +
>>>>> + /* Read AuthType */
>>>>> + vnc_read_when(vs, protocol_authtype, 1);
>>>>>  
>>>>>       
>>>>>           
>>>> As I mentioned before, you cannot have to vnc_read_when()'s execution 
>>>> path without returning the the mainloop.
>>>>
>>>> protocol_authtype() cannot possibly be invoked.  If the code is working 
>>>> now, it's pure luck.
>>>>     
>>>>         
>>> Yeah, the impl of protocol_authtype() in there is a no-op too - it should
>>> be rejecting auth types which aren't supported, even if it was being 
>>> invoked.
>>> With the code as it is, protocol_authtype never runs & the server starts
>>> doing VNCAuth regardless of what the client says it wants to do, which is
>>> clearly not correct.
>>>   
>>>       
>> Another thing to keep in mind, is that the reason I did 3.3 instead of 
>> 3.8 is that I knew there was only one auth type we would be supporting.  
>> If we do support multiple auth types, we really ought to move to using 
>> the 3.8 protocol since that provides a negotiation mechanism.
>>
>> Regards,
>>
>> Anthony Liguori
>>
>>     
>>> Dan.
>>>   
>>>       
>
>   


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.