Added fallback to CMDTYPE_STREAM_SURFACE_BITS
authorakallabeth <akallabeth@posteo.net>
Thu, 2 Apr 2020 10:13:45 +0000 (12:13 +0200)
committerakallabeth <akallabeth@posteo.net>
Fri, 3 Apr 2020 10:18:59 +0000 (12:18 +0200)
Since our samples were incorrect, add a fallback with a log warnings
to the old CMDTYPE_STREAM_SURFACE_BITS by default behaviour.

libfreerdp/core/surface.c

index 76ca962..d5c7098 100644 (file)
@@ -224,21 +224,26 @@ static BOOL update_write_surfcmd_bitmap_ex(wStream* s, const TS_BITMAP_DATA_EX*
 
 BOOL update_write_surfcmd_surface_bits(wStream* s, const SURFACE_BITS_COMMAND* cmd)
 {
+       UINT16 cmdType;
        if (!Stream_EnsureRemainingCapacity(s, SURFCMD_SURFACE_BITS_HEADER_LENGTH))
                return FALSE;
 
-       switch (cmd->cmdType)
+       cmdType = cmd->cmdType;
+       switch (cmdType)
        {
                case CMDTYPE_SET_SURFACE_BITS:
                case CMDTYPE_STREAM_SURFACE_BITS:
                        break;
                default:
-                       WLog_ERR(TAG, "%s SURFACE_BITS_COMMAND->cmdType 0x%08" PRIx32 " not allowed.",
-                                cmd->cmdType);
-                       return FALSE;
+                       WLog_WARN(TAG,
+                                 "SURFACE_BITS_COMMAND->cmdType 0x%04" PRIx16
+                                 " not allowed, correcting to 0x%04" PRIx16,
+                                 cmdType, CMDTYPE_STREAM_SURFACE_BITS);
+                       cmdType = CMDTYPE_STREAM_SURFACE_BITS;
+                       break;
        }
 
-       Stream_Write_UINT16(s, cmd->cmdType);
+       Stream_Write_UINT16(s, cmdType);
        Stream_Write_UINT16(s, cmd->destLeft);
        Stream_Write_UINT16(s, cmd->destTop);
        Stream_Write_UINT16(s, cmd->destRight);