Disconnect with ERRINFO_INVALID_INPUT_PDU_MOUSE (0x000010D0)
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
freerdp (Ubuntu) |
Invalid
|
High
|
Unassigned |
Bug Description
I'm using FreeRDP to connect through an SCB (Shell Control Box) v4.1 to a Windows 2008 Server. When I connect to the server, FreeRDP immediately disconnects with the following error message:
ERRINFO_
(a) A Slow-Path Mouse Event (section 2.2.8.1.1.3.1.1.3) or Extended Mouse Event (section 2.2.8.1.1.3.1.1.4) has been received with an invalid pointerFlags field.
(b) A Fast-Path Mouse Event (section 2.2.8.1.2.2.3) or Fast-Path Extended Mouse Event (section 2.2.8.1.2.2.4) has been received with an invalid pointerFlags field.
Failed to check FreeRDP file descriptor
Upon investigation, I found that it was a regression which was introduced in the FreeRDP source code in the past, and it has already been corrected in the upstream FreeRDP source code. Very old historical versions don't have this error and connect smoothly, while a build from the most-up-to-date Git repository also doesn't have this problem.
With bisection, I found that the issue disappears after this merge commit:
commit a83ccfd3658437c
Merge: b91c103 aa466a8
Author: Marc-Andr<C3><A9> Moreau <email address hidden>
Date: Tue Apr 8 23:53:45 2014 -0400
Merge branch 'master' of github.
Note that I couldn't get a more accurate result as many commits around this merge fail to compile, but this commit was the first one I found which compiles and works correctly.
I also know that this commit fixes a build problem AND has the above PDU_MOUSE error: 7324ded7a263848
I kindly ask the package maintainer to backport commit a83ccfd3658437c
there is no patch, and the backport seems to be not applying cleanly bff1d01c9cf6125 6afeebca7d. patch does not apply (enforce with -f)
Patch a83ccfd3658437c
Applying patch a83ccfd3658437c bff1d01c9cf6125 6afeebca7d. patch common/ cmdline. c common/ compatibility. c core/connection .c core/fastpath. c core/fastpath. c core/gcc. c core/input. c core/license. c core/license. c core/license. h core/nego. c core/rdp. c core/rdp. c core/security. c core/mcs. c core/connection .c core/connection .c core/peer. c core/connection .c core/connection .c freerdp/ utils/svc_ plugin. h utils/svc_ plugin. c
patching file client/
Hunk #1 succeeded at 1454 (offset -147 lines).
patching file client/
Hunk #1 succeeded at 691 (offset -2 lines).
patching file libfreerdp/
Hunk #1 succeeded at 303 (offset -124 lines).
patching file libfreerdp/
Hunk #2 FAILED at 138.
Hunk #3 FAILED at 148.
Hunk #4 succeeded at 710 with fuzz 2 (offset -37 lines).
Hunk #5 succeeded at 731 (offset -45 lines).
Hunk #6 FAILED at 884.
Hunk #7 FAILED at 894.
Hunk #8 FAILED at 906.
Hunk #9 FAILED at 933.
Hunk #10 FAILED at 954.
7 out of 10 hunks FAILED -- rejects in file libfreerdp/
patching file libfreerdp/
Hunk #1 succeeded at 791 (offset -125 lines).
Hunk #2 succeeded at 953 (offset -131 lines).
patching file libfreerdp/
Hunk #1 succeeded at 163 with fuzz 1.
patching file libfreerdp/
Hunk #3 succeeded at 189 with fuzz 2.
Hunk #4 FAILED at 204.
1 out of 4 hunks FAILED -- rejects in file libfreerdp/
patching file libfreerdp/
Hunk #2 succeeded at 197 with fuzz 1.
patching file libfreerdp/
Hunk #1 succeeded at 151 (offset -5 lines).
Hunk #2 succeeded at 892 (offset -47 lines).
patching file libfreerdp/
Hunk #1 FAILED at 291.
Hunk #2 FAILED at 467.
Hunk #3 succeeded at 736 (offset -196 lines).
2 out of 3 hunks FAILED -- rejects in file libfreerdp/
patching file libfreerdp/
Hunk #2 succeeded at 362 (offset -45 lines).
Hunk #3 succeeded at 376 with fuzz 2 (offset -45 lines).
Hunk #4 succeeded at 380 with fuzz 1 (offset -50 lines).
Hunk #5 succeeded at 386 with fuzz 1 (offset -55 lines).
Hunk #6 succeeded at 392 (offset -60 lines).
Hunk #7 succeeded at 428 (offset -60 lines).
Hunk #8 succeeded at 457 with fuzz 1 (offset -60 lines).
Hunk #9 succeeded at 481 (offset -75 lines).
Hunk #10 succeeded at 493 with fuzz 1 (offset -75 lines).
Hunk #11 succeeded at 510 with fuzz 1 (offset -80 lines).
patching file libfreerdp/
Hunk #1 succeeded at 833 (offset -204 lines).
patching file libfreerdp/
Hunk #1 FAILED at 396.
Hunk #2 FAILED at 414.
Hunk #3 FAILED at 434.
Hunk #4 FAILED at 454.
Hunk #5 FAILED at 528.
Hunk #6 succeeded at 399 (offset -146 lines).
Hunk #7 FAILED at 559.
6 out of 7 hunks FAILED -- rejects in file libfreerdp/
patching file libfreerdp/
Hunk #1 succeeded at 190 with fuzz 2 (offset 138 lines).
patching file libfreerdp/
Hunk #1 FAILED at 396.
Hunk #2 FAILED at 493.
Hunk #3 FAILED at 545.
Hunk #4 FAILED at 609.
4 out of 4 hunks FAILED -- rejects in file libfreerdp/
patching file include/
Hunk #1 succeeded at 49 with fuzz 2 (offset -1 lines).
patching file libfreerdp/
Hunk #1 succeeded at 187 (offset 10 lines).
Hunk #2 succeeded at 232 (offset 6 lines).
Hunk #3 succeeded at 242 with fuzz 2 (offset 6 lines).
Hunk #4 FAILED at 295.
1 out of 4 hu...