]> git.sesse.net Git - rdpsrv/blobdiff - rdp.c
Fixed (?) and enabled RDP5 encryption.
[rdpsrv] / rdp.c
diff --git a/rdp.c b/rdp.c
index 39d2ce8eeb2b3dbe9efd540fb0dff885ea3cb566..4ea369807335fc929a60c15ee8037b632c2a41ef 100644 (file)
--- a/rdp.c
+++ b/rdp.c
@@ -152,8 +152,14 @@ void rdp_send_bitmap_update(unsigned x, unsigned y, unsigned width, unsigned hei
 {
        STREAM s;
 
 {
        STREAM s;
 
-       s = rdp_init_data(11*2 + width*height*3);
-       out_uint16_le(s, RDP_UPDATE_BITMAP);
+       int length = 10*2 + width*height*3 + 5;
+
+       s = rdp5_init(length, 1);
+
+       out_uint8(s, 1); // process bitmap update
+       out_uint16_le(s, 10*2 + width*height*3 + 2); // RDP5 chunk length
+       out_uint16_le(s, 10*2 + width*height*3);     // part length
+
        out_uint16_le(s, 1); // one update
        out_uint16_le(s, x); // left, top, right, bottom
        out_uint16_le(s, y);
        out_uint16_le(s, 1); // one update
        out_uint16_le(s, x); // left, top, right, bottom
        out_uint16_le(s, y);
@@ -168,7 +174,7 @@ void rdp_send_bitmap_update(unsigned x, unsigned y, unsigned width, unsigned hei
        out_uint8p(s, data, width*height*3);
        
        s_mark_end(s);
        out_uint8p(s, data, width*height*3);
        
        s_mark_end(s);
-       rdp_send_data(s, RDP_DATA_PDU_UPDATE);
+       rdp5_send(s, 1);
 }
 
 #define EXPECT16(value) { in_uint16_le(s, unknown); if (unknown != (value)) printf("Unknown value on code line %u; expected 0x%x, got 0x%x\n", __LINE__, (value), unknown); }
 }
 
 #define EXPECT16(value) { in_uint16_le(s, unknown); if (unknown != (value)) printf("Unknown value on code line %u; expected 0x%x, got 0x%x\n", __LINE__, (value), unknown); }
@@ -275,8 +281,9 @@ rdp_get_logon_info(STREAM s)
                printf("directory='%s'\n", directory);
        }
 
                printf("directory='%s'\n", directory);
        }
 
-       if (!s_check_end(s))
-               error("Unknown data at end of logon packet!\n");
+       if (!s_check_end(s)) {
+               printf("Unknown data at end of logon packet!\n");
+       }
 }
 
 /* Send a control PDU */
 }
 
 /* Send a control PDU */