From f3ff635b75afbc19dbaa87bd711327c06967f0fe Mon Sep 17 00:00:00 2001 From: aschumann-virtualcable Date: Thu, 28 May 2026 16:26:04 +0200 Subject: [PATCH] fix(RDP/macosx): prevent EACCES launching MSRDC/Windows App The `if kind == 'thincast'` branch was independent from the `if kind == 'msrdc'` block, so its trailing `else` (intended for xfreerdp/udsrdp) also ran when `kind == 'msrdc'`. That caused a second `subprocess.Popen([executable, ...])` on the .app bundle path, raising `[Errno 13] Permission denied: '/Applications/Windows App.app'` after the real `open -a` launch already worked. Chains the second condition as `elif` so MSRDC no longer falls through to the xfreerdp/udsrdp launcher. Signatures regenerated. --- server/src/uds/transports/RDP/scripts/macosx/direct.py | 2 +- .../uds/transports/RDP/scripts/macosx/direct.py.signature | 2 +- server/src/uds/transports/RDP/scripts/macosx/tunnel.py | 7 ++++--- .../uds/transports/RDP/scripts/macosx/tunnel.py.signature | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/server/src/uds/transports/RDP/scripts/macosx/direct.py b/server/src/uds/transports/RDP/scripts/macosx/direct.py index 5c9ea8d04..05af1d417 100644 --- a/server/src/uds/transports/RDP/scripts/macosx/direct.py +++ b/server/src/uds/transports/RDP/scripts/macosx/direct.py @@ -153,7 +153,7 @@ def fix_resolution() -> typing.List[str]: tools.addFileToUnlink(filename + '.rdp') # type: ignore -if kind == 'thincast': +elif kind == 'thincast': if sp['as_file']: # type: ignore theFile = sp['as_file'] # type: ignore filename = tools.saveTempFile(theFile) # type: ignore diff --git a/server/src/uds/transports/RDP/scripts/macosx/direct.py.signature b/server/src/uds/transports/RDP/scripts/macosx/direct.py.signature index 73bd92183..0ddeb8738 100644 --- a/server/src/uds/transports/RDP/scripts/macosx/direct.py.signature +++ b/server/src/uds/transports/RDP/scripts/macosx/direct.py.signature @@ -1 +1 @@ -tZTC05CzHcK1sn+ACLyJIWyoey+yib/0Z2Q5/6oCsXsx+4Yeba7sYjnyfy1f4y6JX7jiYWeO9zn/HZCdhK6N+IRnkhOJrvpS3cON93RCAcSjQ98zUSfDEaHCK5kIK1zfknA/tPw/boRJRAbaDpyyJA2A4C6SynC+HAnuM7Q2QMUrKJQx6sqEu+mtoammEwMfEeJNjCW2oYCPDQWUUTdzWZBJwp4yIjXaIASsq/lKnvZD7eyyyAFOawzX3vthqrA4cHNOUEsKGR1usZg82CBYdATs2eQUEuoyP936cgAjSDwGE1t5jyvex41sXsVTvs0IjjWMsuv51w6gt0AviZl5Z9SokK48v56NIA/G00TFCsMvmzK5VGQ1w27njeWe3BbXgz2x6kWxgjGZA4KRbeS+YAEERlYyT8aGsadoM9WQ1FUqiQgCm+SKs9h424P6/IbY3NDHnn8AFfvhp7F3v44U1SxXSxhogbYj4Qz9j/RwjIG30RmMgM9aAHJyoDuwFWC9uPu2iQtFYE1Y3txK93r4PS2x9OiXekd5Rjo2kJPWdr+gDQYRqwy5gBjYRwspJ+8H1qR7/YLOwLakWZlMOOSiWLzyshmJ4C7ITKV6gwN15wQs2Aby3GKMenrJf8aJoHtFd1qp8NIXFaI8IJwMY6z/p1CqwaGrglYNFL+A3CWB5hk= \ No newline at end of file +k6mrISFoFElYne8X/ZwlCFcjiQcRLF/5llTesgAdSeY0WxkWdc7s9GMRdElIGsg8pK+wSUCEYNwmRC0CVN2ITLJ6u5jmsq3b65YwHVuVrleMI/Ep7JxXAcxWyowtFVVCDputTLlHRVaRQwzpbsd+ZtSXBQJP4Znssb/Pmdj3wOUa2pRHmX4nfDWhS5F5Rj6LHL1YiYXtd88s0jVhPXmq4xZWGKAkJqDKfWk85J/k58X+NmTSNk9J6ASZMFDsuOXSAnojk4DSA/KFhYDr7boXEMbvSU4toQATTw7fQ+08OA4ZdlAG7bhKmUQ7zOWOwUk2SrLE0f/Dws0GFj0AP7CwtCne32udeZrtd23Hu5r7gP8Q4592FqciQaEVRiKOkpEWQDq1jeaXH2F7qot2lCVkGqnO4cvlxJoFlebod8OxkJdffSOcenKj2ORxAAFy4evL/TIUnMaVPfNGUhlLW/3yEZ83IlhW7YAFuSCA0sc77Hejpf31IPEmbzx+xjTvbr4XYY51oKUKqIr/ssqef9KyOLkMIqDkII83x0Wpx5RHoxu+zqkp003VL7jvJPNoRBQMEKgq2lvT953iwiIx2K+HG26Ae5Kg02wALItlr3xgwoRK0wmsf/eLIj2K83NbgFW8klI6zvf6qOKAzhlnmPcUUWosgcjHNFuTlx/2JcyppMQ= \ No newline at end of file diff --git a/server/src/uds/transports/RDP/scripts/macosx/tunnel.py b/server/src/uds/transports/RDP/scripts/macosx/tunnel.py index c1d37dec6..1398f417e 100644 --- a/server/src/uds/transports/RDP/scripts/macosx/tunnel.py +++ b/server/src/uds/transports/RDP/scripts/macosx/tunnel.py @@ -70,8 +70,9 @@ def fix_resolution() -> typing.List[str]: logger.debug('Searching for UDSRDP') udsrdp = tools.findApp('udsrdp') # type: ignore if udsrdp and os.path.isfile(udsrdp): # type: ignore - logger.debug('UDSRDP found: %s', udsrdp) - executable = udsrdp # type: ignore + udsrdp_path = typing.cast(str, udsrdp) + logger.debug('UDSRDP found: %s', udsrdp_path) + executable = udsrdp_path kind = 'udsrdp' # If UDSRDP not found, search Thincast @@ -171,7 +172,7 @@ def fix_resolution() -> typing.List[str]: ) tools.addFileToUnlink(filename + '.rdp') # type: ignore -if kind == 'thincast': +elif kind == 'thincast': if sp['as_file']: # type: ignore theFile = sp['as_file'] # type: ignore theFile = theFile.format( # type: ignore diff --git a/server/src/uds/transports/RDP/scripts/macosx/tunnel.py.signature b/server/src/uds/transports/RDP/scripts/macosx/tunnel.py.signature index 3ac3e1173..20b7e3952 100644 --- a/server/src/uds/transports/RDP/scripts/macosx/tunnel.py.signature +++ b/server/src/uds/transports/RDP/scripts/macosx/tunnel.py.signature @@ -1 +1 @@ -BnMXDzuuKjCcpfmHYuVYJkhHgFy4jBKuZUmffYGZwdsrSv9vlOFzyMnImGB7zEhqrlvy7agObr4+gK1xHqI48KRMD2EhcVFyjd4viQPFFzOzhcRRmuL1e997JFcNFP7sJnm9uObjlAWWt3IK/3JKBrzmTJT1iKwZBqiS1OgvNagyf/oSOiM/iaIpmlOXe3zyapJOS/rv9QrNlRq0E/sc63GR4PBQdlUIYL2qpydySM1jLEMCz6OPcPYegBfZP0XtqAwDPIyQ0hRf13LJYn5mWzyIYL4+fwCc1Cy8vZp1Ae8ISfzn27zobbq+KKvMtqq5eoKcyV+H6OuabN56l/7tRTj2MYY+I8sUaf/KErt81fu0igvH6P1lo4xQZCpejiI8GXbxDuWwopo960meU9Qdf3fnyG3DkXc7pbhzHyiLiMwBtv39wxGKgZMg1kC/EjcOVxoOFXaSuMvt/kPyT6qBFSxZQIu41l9gxVamSI4l5buBmhuuC8GokcDDKWvB4eYXrvfHRMYClJphjlXsSS/90TveO+fhQ3TzHMmiw+SWCYyvuNQ2Gr6G3ZyF82xvdm64wZlz5KVvEDxFfKRB5alRauwxHDlISV0BzvHFKD0GNA3qI8o3C/LBytvQ9vMVq/D011C5RQ9CSKGjeq4ynVp+dI1T0Th3aYcJFGrg7NDoGEM= \ No newline at end of file +Q9dGGz3kLHoCYiPRpLpEawpk3PotLL2aAsrVEiWnSt4DLB1FGlHxcaJL2sFaPqiUVbfQyNSESmGG4RZZpy12VSKSzNO39c5Xk0xXqokWeXoHSWmptJzj1hH/wrqTRROYJl8LAMXIAo8451VHx+qxND+noXee2nKk+McqG2XWoaIdcKbLIlOtN9kRoUDtrwqtMzoHNpcUbzaVtFb2BWdVUh+BcmjYEtRuO5rluxXsIIzz78eiXaQIn9Fy+tdCbD08Pfd6B5gorJNPudw7eI1GJye9enWFXXPlSm53epbOrRjKdpavwbO1P88A4C5odFjp8z9SP3FBC0gmLV9lnyV14YgQL1Iiy+IwvD1jRjgpyGFpS+vsyJ4WrGDYI2phxy267152e8jwTh3hDHAhjHzNiHUE5DQoxCw04N77dpuvPKnSmDxAlU+YT5iQUn2hlkiGcu6i2QPndBFwPpLGFXEVdWCvl8o+XnNO/PKpM6f/7ib30gmqkQAzTTNSGtz3QBLIYk6EiXI/WEJ5LYiqmS3UJbe+CUQsRzQZm0/jxR3gY2SUYDiggkp3SBc3DWl5qiI4R95l3ewwdQc4ZQdrLGbBVpyD+Cmhxpp8DB8pDvx2HrHPR8FaRhTsUuq7yqWNSU86ysTSol81Ri6BrxjLXvZDsDKM1nR2NLIFqQ0ef8V5Z1c= \ No newline at end of file