{"record":{"id":"7ac280e30b9f7ae8","repo":"shadow1ng/fscan","slug":"unsupport-slow-update-type-0x-x","errorCode":null,"errorMessage":"Unsupport slow update type 0x%x","messagePattern":"Unsupport slow update type 0x%x","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"libs/grdp/protocol/pdu/data.go","lineNumber":530,"sourceCode":"\t//slow path update\n\td.UpdateType, err = core.ReadUint16LE(r)\n\tglog.Debugf(\"UpdateType 0x%02x\", d.UpdateType)\n\tvar p UpdateData\n\tswitch d.UpdateType {\n\tcase FASTPATH_UPDATETYPE_ORDERS:\n\tcase FASTPATH_UPDATETYPE_BITMAP:\n\t\tp = &BitmapUpdateDataPDU{}\n\tcase FASTPATH_UPDATETYPE_PALETTE:\n\tcase FASTPATH_UPDATETYPE_SYNCHRONIZE:\n\t}\n\tif p != nil {\n\t\terr = p.Unpack(r)\n\t\tif err != nil {\n\t\t\t//glog.Error(\"Unpack:\", err)\n\t\t\treturn err\n\t\t}\n\t} else {\n\t\treturn errors.New(fmt.Sprintf(\"Unsupport slow update type 0x%x\", d.UpdateType))\n\t}\n\n\td.Udata = p\n\n\treturn nil\n}\n\ntype BitmapUpdateDataPDU struct {\n\tNumberRectangles uint16 `struc:\"little,sizeof=Rectangles\"`\n\tRectangles       []BitmapData\n}\n\nfunc (*BitmapUpdateDataPDU) FastPathUpdateType() uint8 {\n\treturn FASTPATH_UPDATETYPE_BITMAP\n}\nfunc (f *BitmapUpdateDataPDU) Unpack(r io.Reader) error {\n\tvar err error\n\tf.NumberRectangles, err = core.ReadUint16LE(r)","sourceCodeStart":512,"sourceCodeEnd":548,"githubUrl":"https://github.com/shadow1ng/fscan/blob/95cc12e753bf43de7004e5aef42a9ffba3934303/libs/grdp/protocol/pdu/data.go#L512-L548","documentation":"UpdateDataPDU.Unpack in libs/grdp/protocol/pdu/data.go parses slow-path graphics update PDUs. When d.UpdateType is not one of the supported slow-update kinds (bitmap, orders, colormap, pointer, etc.), the function returns this error. It means the server sent a slow-path update subtype this client cannot render.","triggerScenarios":"Server sends an UpdateDataPDU with updateType outside the implemented switch — e.g. StreamBitmapOnly/StreamBitmapOther updates, or a corrupt type after stream misalignment — during the session update loop.","commonSituations":"Windows 8+/Server 2012+ servers preferring streamed/remotefx updates over classic slow-path bitmap updates; a previously misparsed PDU leaving the reader misaligned so an arbitrary byte becomes UpdateType; connecting with caps that fail to negotiate fast-path updates.","solutions":["Enable/accept fast-path update negotiation so graphics arrive via FastPathPDU instead of unsupported slow-path streamed updates","Add a case for the printed 0x%x update type in UpdateDataPDU.Unpack (or skip it) in data.go","Check for earlier desync — if every subsequent PDU fails too, the reader is misaligned; reconnect and inspect the previous PDU parse","Use a grdp version that implements the streamed bitmap update types your server sends"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"err := session.Run()\nif err != nil {\n    if strings.Contains(err.Error(), \"Unsupport slow update type\") {\n        log.Printf(\"reconnecting to negotiate fast-path updates: %v\", err)\n        return reconnectWithFastPath()\n    }\n    return err\n}","preventionTips":["Negotiate fast-path updates so heavy graphics avoid slow-path encoding","Set conservative capabilities (lossy bitmap compression off, no streamed updates) in client caps","Upgrade grdp to cover streamed bitmap update types","Reconnect on first occurrence — a single hit after clean start may be desync"],"tags":["rdp","graphics","protocol-parsing"],"backgroundTag":"unsupported-enum-value","analyzedSha":"95cc12e753bf43de7004e5aef42a9ffba3934303","analyzedAt":"2026-09-06T17:07:30.094Z","contentChangedAt":"2026-09-06T17:07:30.094Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}