[PATCH] ui/vnc: fix enabling of VNC_FEATURE_XVP

Paolo Bonzini posted 1 patch 7 months, 1 week ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20230925145034.530623-1-pbonzini@redhat.com
Maintainers: Gerd Hoffmann <kraxel@redhat.com>, "Marc-André Lureau" <marcandre.lureau@redhat.com>
ui/vnc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] ui/vnc: fix enabling of VNC_FEATURE_XVP
Posted by Paolo Bonzini 7 months, 1 week ago
VNC_FEATURE_XVP was not shifted left before adding it to vs->features,
so it was never enabled.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 ui/vnc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ui/vnc.c b/ui/vnc.c
index 6fd86996a54..3d13757b72b 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -2205,7 +2205,7 @@ static void set_encodings(VncState *vs, int32_t *encodings, size_t n_encodings)
             break;
         case VNC_ENCODING_XVP:
             if (vs->vd->power_control) {
-                vs->features |= VNC_FEATURE_XVP;
+                vs->features |= VNC_FEATURE_XVP_MASK;
                 send_xvp_message(vs, VNC_XVP_CODE_INIT);
             }
             break;
-- 
2.41.0
Re: [PATCH] ui/vnc: fix enabling of VNC_FEATURE_XVP
Posted by Daniel P. Berrangé 7 months, 1 week ago
On Mon, Sep 25, 2023 at 04:50:34PM +0200, Paolo Bonzini wrote:
> VNC_FEATURE_XVP was not shifted left before adding it to vs->features,
> so it was never enabled.
> 
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  ui/vnc.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

/facepalm

I definitely tested this code, because I had to use QEMU to
validate the GTK-VNC client implementation....


> 
> diff --git a/ui/vnc.c b/ui/vnc.c
> index 6fd86996a54..3d13757b72b 100644
> --- a/ui/vnc.c
> +++ b/ui/vnc.c
> @@ -2205,7 +2205,7 @@ static void set_encodings(VncState *vs, int32_t *encodings, size_t n_encodings)
>              break;
>          case VNC_ENCODING_XVP:
>              if (vs->vd->power_control) {
> -                vs->features |= VNC_FEATURE_XVP;
> +                vs->features |= VNC_FEATURE_XVP_MASK;
>                  send_xvp_message(vs, VNC_XVP_CODE_INIT);
>              }
>              break;

....I made the same screwup when processing messages:


    case VNC_MSG_CLIENT_XVP:
        if (!(vs->features & VNC_FEATURE_XVP)) {
            error_report("vnc: xvp client message while disabled");
            vnc_client_error(vs);
            break;
        }

so the bugs (kinda) cancelled out. So you'll need to fix
both places

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
Re: [PATCH] ui/vnc: fix enabling of VNC_FEATURE_XVP
Posted by Paolo Bonzini 7 months, 1 week ago
On 9/25/23 17:43, Daniel P. Berrangé wrote:
> On Mon, Sep 25, 2023 at 04:50:34PM +0200, Paolo Bonzini wrote:
>> VNC_FEATURE_XVP was not shifted left before adding it to vs->features,
>> so it was never enabled.
>>
>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>> ---
>>   ui/vnc.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> /facepalm
> 
> I definitely tested this code, because I had to use QEMU to
> validate the GTK-VNC client implementation....
> 
> 
>>
>> diff --git a/ui/vnc.c b/ui/vnc.c
>> index 6fd86996a54..3d13757b72b 100644
>> --- a/ui/vnc.c
>> +++ b/ui/vnc.c
>> @@ -2205,7 +2205,7 @@ static void set_encodings(VncState *vs, int32_t *encodings, size_t n_encodings)
>>               break;
>>           case VNC_ENCODING_XVP:
>>               if (vs->vd->power_control) {
>> -                vs->features |= VNC_FEATURE_XVP;
>> +                vs->features |= VNC_FEATURE_XVP_MASK;
>>                   send_xvp_message(vs, VNC_XVP_CODE_INIT);
>>               }
>>               break;
> 
> ....I made the same screwup when processing messages:
> 
> 
>      case VNC_MSG_CLIENT_XVP:
>          if (!(vs->features & VNC_FEATURE_XVP)) {
>              error_report("vnc: xvp client message while disabled");
>              vnc_client_error(vs);
>              break;
>          }
> 
> so the bugs (kinda) cancelled out. So you'll need to fix
> both places

Doh, I "assumed" it was a thinko coming from usage of vnc_has_feature 
elsewhere.  I will send v2.

Paolo