bug due to wrong exemple in microsoft spec

This commit is contained in:
speyrefitte
2014-06-13 18:05:53 +02:00
parent 2e81b89ce8
commit d5aa34bda5

View File

@@ -591,6 +591,7 @@ class SoundFlag(object):
''' '''
NONE = 0x0000 NONE = 0x0000
SOUND_BEEPS_FLAG = 0x0001 SOUND_BEEPS_FLAG = 0x0001
class RDPInfo(CompositeType): class RDPInfo(CompositeType):
''' '''
client informations client informations
@@ -654,13 +655,13 @@ class ShareDataHeader(CompositeType):
PDU share data header PDU share data header
@see: http://msdn.microsoft.com/en-us/library/cc240577.aspx @see: http://msdn.microsoft.com/en-us/library/cc240577.aspx
''' '''
def __init__(self, size, pduType2, userId = UInt16Le()): def __init__(self, size, pduType2, userId = UInt16Le(), shareId = UInt32Le()):
CompositeType.__init__(self) CompositeType.__init__(self)
self.shareControlHeader = ShareControlHeader(size, PDUType.PDUTYPE_DATAPDU, userId) self.shareControlHeader = ShareControlHeader(size, PDUType.PDUTYPE_DATAPDU, userId)
self.shareId = UInt32Le() self.shareId = shareId
self.pad1 = UInt8() self.pad1 = UInt8()
self.streamId = UInt8() self.streamId = StreamId.STREAM_LOW
self.uncompressedLength = UInt16Le() self.uncompressedLength = UInt16Le(lambda:(UInt16Le(size).value - 14))
self.pduType2 = UInt8(pduType2.value, constant = True) self.pduType2 = UInt8(pduType2.value, constant = True)
self.compressedType = UInt8() self.compressedType = UInt8()
self.compressedLength = UInt16Le() self.compressedLength = UInt16Le()
@@ -1014,9 +1015,9 @@ class SynchronizePDU(CompositeType):
''' '''
@see http://msdn.microsoft.com/en-us/library/cc240490.aspx @see http://msdn.microsoft.com/en-us/library/cc240490.aspx
''' '''
def __init__(self, userId = UInt16Le()): def __init__(self, userId = UInt16Le(), shareId = UInt32Le()):
CompositeType.__init__(self) CompositeType.__init__(self)
self.shareDataHeader = ShareDataHeader(lambda:sizeof(self), PDUType2.PDUTYPE2_SYNCHRONIZE, userId) self.shareDataHeader = ShareDataHeader(lambda:sizeof(self), PDUType2.PDUTYPE2_SYNCHRONIZE, userId, shareId)
self.messageType = UInt16Le(1, constant = True) self.messageType = UInt16Le(1, constant = True)
self.targetUser = UInt16Le() self.targetUser = UInt16Le()
@@ -1024,9 +1025,9 @@ class ControlPDU(CompositeType):
''' '''
@see http://msdn.microsoft.com/en-us/library/cc240492.aspx @see http://msdn.microsoft.com/en-us/library/cc240492.aspx
''' '''
def __init__(self, userId = UInt16Le()): def __init__(self, userId = UInt16Le(), shareId = UInt32Le()):
CompositeType.__init__(self) CompositeType.__init__(self)
self.shareDataHeader = ShareDataHeader(lambda:sizeof(self), PDUType2.PDUTYPE2_CONTROL, userId) self.shareDataHeader = ShareDataHeader(lambda:sizeof(self), PDUType2.PDUTYPE2_CONTROL, userId, shareId)
self.action = UInt16Le() self.action = UInt16Le()
self.grantId = UInt16Le() self.grantId = UInt16Le()
self.controlId = UInt32Le() self.controlId = UInt32Le()
@@ -1048,9 +1049,9 @@ class PersistentListPDU(CompositeType):
fill with some keys from previous session fill with some keys from previous session
@see: http://msdn.microsoft.com/en-us/library/cc240495.aspx @see: http://msdn.microsoft.com/en-us/library/cc240495.aspx
''' '''
def __init__(self, userId = UInt16Le()): def __init__(self, userId = UInt16Le(), shareId = UInt32Le()):
CompositeType.__init__(self) CompositeType.__init__(self)
self.shareControlHeader = ShareDataHeader(lambda:sizeof(self), PDUType2.PDUTYPE2_BITMAPCACHE_PERSISTENT_LIST, userId) self.shareControlHeader = ShareDataHeader(lambda:sizeof(self), PDUType2.PDUTYPE2_BITMAPCACHE_PERSISTENT_LIST, userId, shareId)
self.numEntriesCache0 = UInt16Le() self.numEntriesCache0 = UInt16Le()
self.numEntriesCache1 = UInt16Le() self.numEntriesCache1 = UInt16Le()
self.numEntriesCache2 = UInt16Le() self.numEntriesCache2 = UInt16Le()
@@ -1116,11 +1117,11 @@ class PDU(LayerAutomata):
CapsType.CAPSTYPE_OFFSCREENCACHE : Capability(CapsType.CAPSTYPE_OFFSCREENCACHE, OffscreenBitmapCacheCapability()), CapsType.CAPSTYPE_OFFSCREENCACHE : Capability(CapsType.CAPSTYPE_OFFSCREENCACHE, OffscreenBitmapCacheCapability()),
CapsType.CAPSTYPE_VIRTUALCHANNEL : Capability(CapsType.CAPSTYPE_VIRTUALCHANNEL, VirtualChannelCapability()), CapsType.CAPSTYPE_VIRTUALCHANNEL : Capability(CapsType.CAPSTYPE_VIRTUALCHANNEL, VirtualChannelCapability()),
CapsType.CAPSTYPE_SOUND : Capability(CapsType.CAPSTYPE_SOUND, SoundCapability()), CapsType.CAPSTYPE_SOUND : Capability(CapsType.CAPSTYPE_SOUND, SoundCapability()),
CapsType.CAPSTYPE_CONTROL : Capability(CapsType.CAPSTYPE_CONTROL, ControlCapability()), #CapsType.CAPSTYPE_CONTROL : Capability(CapsType.CAPSTYPE_CONTROL, ControlCapability()),
CapsType.CAPSTYPE_ACTIVATION : Capability(CapsType.CAPSTYPE_ACTIVATION, WindowActivationCapability()), #CapsType.CAPSTYPE_ACTIVATION : Capability(CapsType.CAPSTYPE_ACTIVATION, WindowActivationCapability()),
CapsType.CAPSTYPE_FONT : Capability(CapsType.CAPSTYPE_FONT, FontCapability()), #CapsType.CAPSTYPE_FONT : Capability(CapsType.CAPSTYPE_FONT, FontCapability()),
CapsType.CAPSTYPE_COLORCACHE : Capability(CapsType.CAPSTYPE_COLORCACHE, ColorCacheCapability()), #CapsType.CAPSTYPE_COLORCACHE : Capability(CapsType.CAPSTYPE_COLORCACHE, ColorCacheCapability()),
CapsType.CAPSTYPE_SHARE : Capability(CapsType.CAPSTYPE_SHARE, ShareCapability()) #CapsType.CAPSTYPE_SHARE : Capability(CapsType.CAPSTYPE_SHARE, ShareCapability())
} }
#share id between client and server #share id between client and server
self._shareId = UInt32Le() self._shareId = UInt32Le()
@@ -1261,22 +1262,22 @@ class PDU(LayerAutomata):
''' '''
send a synchronize PDU from client to server send a synchronize PDU from client to server
''' '''
synchronizePDU = SynchronizePDU(self._userId) synchronizePDU = SynchronizePDU(self._userId, self._shareId)
synchronizePDU.targetUser = self._channelId synchronizePDU.targetUser = UInt16Le(self._channelId.value)
self._transport.send(self._channelId, synchronizePDU) self._transport.send(self._channelId, synchronizePDU)
#ask for cooperation #ask for cooperation
controlCooperatePDU = ControlPDU(self._userId) controlCooperatePDU = ControlPDU(self._userId, self._shareId)
controlCooperatePDU.action = Action.CTRLACTION_COOPERATE controlCooperatePDU.action = Action.CTRLACTION_COOPERATE
self._transport.send(self._channelId, controlCooperatePDU) self._transport.send(self._channelId, controlCooperatePDU)
#request control #request control
controlRequestPDU = ControlPDU(self._userId) controlRequestPDU = ControlPDU(self._userId, self._shareId)
controlRequestPDU.action = Action.CTRLACTION_REQUEST_CONTROL controlRequestPDU.action = Action.CTRLACTION_REQUEST_CONTROL
self._transport.send(self._channelId, controlRequestPDU) self._transport.send(self._channelId, controlRequestPDU)
#send persistent list pdu #send persistent list pdu
persistentListPDU = PersistentListPDU(self._userId) persistentListPDU = PersistentListPDU(self._userId, self._shareId)
persistentListPDU.bitMask = PersistentKeyListFlag.PERSIST_FIRST_PDU | PersistentKeyListFlag.PERSIST_LAST_PDU persistentListPDU.bitMask = PersistentKeyListFlag.PERSIST_FIRST_PDU | PersistentKeyListFlag.PERSIST_LAST_PDU
self._transport.send(self._channelId, persistentListPDU) self._transport.send(self._channelId, persistentListPDU)